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

5 minuto de leitura
0

A função do AWS Lambda para minha origem do evento da 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 origem de eventos, as funções do Lambda podem aumentar a escala verticalmente de forma ideal 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 de evento do tipo primeiro a entrar, primeiro a sair (FIFO), as funções poderão reduzir a escala horizontalmente 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 limita o ajuste de scaling 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 falhas de invocações. Para resolver erros de invocação da função do Lambda, consulte Solucionar erros para uma origem de evento do SQS no Lambda e Como soluciono falhas da função do Lambda?

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

Simultaneidade reservada

Se você configurou a simultaneidade reservada na função, o Lambda a limitará quando ela atingir 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 mínima reservada para sua função deve ser 1.250 para filas SQS padrão e igual ao total de grupos de mensagens ativos para filas FIFO. É uma prática recomendada definir sua simultaneidade reservada acima do número de grupos de mensagens na fila FIFO. Uma simultaneidade reservada menor pode causar atrasos no processamento da fila FIFO e limitar sua função.

Importante: para limitar o número de invocações simultâneas, use a configuração de simultaneidade máxima para origens de eventos 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 pool de 1.000 simultaneidades, o Lambda limita 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 scaling da simultaneidade. Como a taxa de scaling 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 scaling 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 funções.

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

Configuração máxima da simultaneidade

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.

Você pode usar a configuração máxima da simultaneidade 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 limitadas.

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

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

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

Se a métrica estiver baixa ou em 0, a função não poderá 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 evento até que a métrica Duração não aumente. Para obter mais informações sobre métricas do Lambda, consulte Tipos de métricas.

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 está adicionando as mensagens a uma fila

Para verificar se o Amazon SQS está adicionando as novas mensagens a uma fila, revise a métrica NumberOfMessageSent da fila.

Confirme se o consumidor está fazendo a chamada de API ReceiveMessage

Para verificar se o consumidor está fazendo a chamada de API ReceiveMessage, revise a métrica NumberOfMessagesReceived da fila.

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

Informações relacionadas

Using Lambda with Amazon SQS

Managing AWS Lambda function concurrency

AWS OFICIAL
AWS OFICIALAtualizada há 3 meses