Ir para o conteúdo

Por que minha função do Lambda com uma origem de evento do Amazon SQS não está escalando da maneira ideal?

6 minuto de leitura
0

A função do AWS Lambda para minha origem de evento de fila do Amazon Simple Queue Service (Amazon SQS) não está escalando conforme o esperado. Eu quero configurar a simultaneidade ideal.

Resolução

Observação: quando você configura uma fila do Amazon SQS como uma origem de evento, as funções do Lambda podem aumentar a escala verticalmente de forma ideal em até 300 instâncias a mais por minuto. O número máximo de execuções simultâneas para filas padrão é 1.250. Se você usar o mapeamento da origem do evento do tipo primeiro a entrar, primeiro a sair (FIFO), as funções podem reduzir a escala horizontalmente da simultaneidade para o número de grupos de mensagens ativos.

Identifique e resolva problemas de invocação da função do Lambda

Para evitar erros em escala, o Lambda controla a escalabilidade de funções quando ocorrem erros de invocação. Depois de resolver os problemas, o Lambda continua escalando a função. Para obter mais informações, consulte Estratégia de recuo para invocações com falha. Para resolver erros de invocação da função do Lambda, consulte Tratamento de erros para uma origem de eventos do SQS no Lambda e Como soluciono problemas de falhas na função do Lambda?

Configure sua função do Lambda com a simultaneidade ideal

Simultaneidade reservada

Se você configurou a simultaneidade reservada na sua função, o Lambda a controla quando ela atinge o valor reservado. Os mapeamentos da origem do evento não incluem simultaneidade reservada e podem processar mais mensagens da sua fila do que enviar para sua função.

A simultaneidade reservada mínima para sua função deve ser 1.250 para filas SQS padrão e igual ao total de grupos de mensagens ativas para filas FIFO. É uma prática recomendada definir sua simultaneidade reservada maior do que o número de grupos de mensagens na fila FIFO. Uma simultaneidade reservada menor pode causar atrasos no processamento da fila FIFO e controlar sua função.

Importante: para limitar o número de invocações simultâneas, use a configuração de simultaneidade máxima em origens de evento do Amazon SQS em vez da simultaneidade reservada.

Simultaneidade padrão

Sua conta da AWS tem uma cota de simultaneidade padrão de 1.000 para todas as funções na mesma conta e região da AWS. As funções são escaladas até atingirem a simultaneidade máxima disponível. Quando todas as suas funções usam o grupo de 1.000 simultaneidades, o Lambda controla as invocações.

O Lambda restringe a rapidez com que suas funções podem ser escaladas para que picos repentinos no tráfego não façam com que as funções sejam escaladas excessivamente. As funções do Lambda são inicialmente escaladas com base na taxa de escalabilidade da simultaneidade. Como a taxa de escalabilidade da simultaneidade está no nível da função, cada função em sua conta pode ser escalada independentemente de outras funções. A taxa de escalabilidade da simultaneidade também difere da cota de simultaneidade no nível da conta, que fornece a quantidade total de simultaneidade disponível para as suas funções.

Observação: a simultaneidade padrão é diferente da simultaneidade provisionada. Para obter mais informações, consulte Compreender a simultaneidade reservada e a simultaneidade provisionada.

Configuração de simultaneidade máxima

Quando você define a simultaneidade máxima para uma origem do evento, o valor somente se aplica à origem do evento específica. As origens de evento adicionais sem simultaneidade máxima usam a cota de simultaneidade restante da conta ou a simultaneidade reservada.

É possível usar a configuração de simultaneidade máxima e a simultaneidade reservada em conjunto. É uma prática recomendada definir a simultaneidade máxima abaixo da simultaneidade reservada da função para que as funções não sejam controladas.

Confirme se há mensagens suficientes na sua fila do Amazon SQS para permitir que sua função do Lambda seja escalada

Se você configurou uma fila do Amazon SQS para invocar uma função do Lambda, o Lambda escala as invocações somente quando houver mensagens nessa fila.

Para usar o Amazon CloudWatch para verificar quantas mensagens em sua fila devem ser processadas, verifique a métrica ApproximateNumberOfMessagesVisible da fila.

Se a métrica estiver baixa ou em 0, a função não pode ser escalada.

Se a métrica for alta e não houver problemas de invocação, aumente o tamanho do lote na notificação do seu evento até que a métrica Duration não apresente pico. Para obter mais informações, consulte Tipos de métricas para funções do Lambda.

Observação: o tamanho máximo do lote para uma fila padrão do Amazon SQS é de 10.000 registros. Para filas FIFO, o tamanho máximo do lote é de 10 registros.

Confirme se o Amazon SQS adicionou as mensagens a uma fila

Para verificar se o Amazon SQS adicionou as novas mensagens a uma fila, verifique a métrica NumberOfMessagesSent da fila.

Confirme se o consumidor fez a chamada de API ReceiveMessage

Para verificar se o consumidor fez a chamada de API ReceiveMessage, verifique a métrica NumberOfMessagesReceived da fila.

Observação: os picos na métrica NumberOfEmptyReceives mostram que o consumidor fez a chamada de API ReceiveMessage, mas a chamada não retorna uma mensagem da fila. Esse problema ocorre quando nenhuma mensagem está na fila.

Use o modo provisionado com mapeamentos da origem do evento do Amazon SQS

Use o modo provisionado em workloads para ajustar o throughput do seu mapeamento da origem do evento e definir os limites para as sondagens de eventos. O mapeamento da origem do evento do Amazon SQS configurado com o modo provisionado escala 3 vezes mais rápido e 16 vezes mais simultaneidade do que o recurso padrão de mapeamento da origem do evento do Amazon SQS.

É uma prática recomendada usar o modo provisionado em workloads orientados a eventos do SQS que têm requisitos rígidos de desempenho. Por exemplo, empresas de serviços financeiros que processam feeds de dados de mercado e plataformas de comércio eletrônico que fornecem recomendações personalizadas em tempo real.

Para obter mais informações, consulte AWS Lambda enhances event processing with provisioned mode for SQS event-source mapping (O AWS Lambda aprimora o processamento de eventos com o modo provisionado para mapeamento da origem do evento do SQS).

Observação: o modo provisionado gera custos adicionais. Para obter mais informações, consulte AWS Lambda – Definição de preço.

Informações relacionadas

Usar o Lambda com o Amazon SQS

Managing AWS Lambda function concurrency (Gerenciamento da simultaneidade da função do AWS Lambda)

AWS OFICIALAtualizada há 7 meses