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

Para minha origem de eventos de fila do Amazon Simple Queue Service (Amazon SQS), quero que minha função do AWS Lambda tenha simultaneidade ideal.

Resolução

Observação: quando você configura uma fila do Amazon SQS como origem de eventos, as funções do Lambda podem escalar de forma ideal até 300 instâncias a mais por minuto. O número máximo de invocações simultâneas é 1.000 para filas padrão. Se você usar o mapeamento de origem de eventos FIFO, as funções poderão ser escaladas em simultaneidade para o número de grupos de mensagens ativos. Para obter mais informações, consulte Scaling and processing.

Identificar e resolver erros de invocação da função do Lambda

Para evitar erros em escala, o Lambda limita o ajuste de escala de funções quando ocorrem erros de invocação. Quando os erros são resolvidos, o Lambda continua escalando a função. Para obter mais informações, consulte Backoff strategy for failed invocations. Para conhecer práticas recomendadas sobre como resolver erros de invocação de funções do Lambda, consulte Troubleshooting issues in Lambda e Como soluciono problemas de falhas na função do Lambda?

Configurar a função do Lambda com a simultaneidade ideal para seu caso de uso

Simultaneidade reservada

Se você configurou a simultaneidade reservada na função, o Lambda a limitará quando ela atingir o valor reservado. Mapeamentos de origem de eventos não levam em conta a simultaneidade reservada e podem processar mais mensagens fora da fila do que as enviadas para a função.

A quantidade de simultaneidade reservada para a função deve ter os seguintes valores mínimos:

  • Para filas padrão do Amazon SQS: 1.000
  • Para filas FIFO: O número de grupos de mensagens ativos

Não é uma prática recomendada ter uma simultaneidade reservada menor que o número de grupos de mensagens na fila FIFO. Uma simultaneidade reservada menor pode causar atrasos no processamento da fila FIFO e fazer com que a função seja limitada.

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 não reservada

Se você não configurar a simultaneidade reservada em sua função, esta terá uma cota de simultaneidade não reservada padrão de 1.000. Essa cota padrão aplica-se a outras funções na mesma conta e região da AWS. Se você tiver pelo menos 1.000 simultaneidades não reservadas disponíveis na região da sua função, a função será escalada até atingir a simultaneidade máxima disponível. Quando toda a simultaneidade da conta está em uso, o Lambda limita as invocações.

Observação: as funções do Lambda são inicialmente escaladas com base na taxa de escalabilidade da simultaneidade.

Para evitar a escalabilidade excessiva devido a picos repentinos no tráfego, o Lambda tem restrições sobre a rapidez com que as funções podem ser escaladas. A taxa de escalabilidade da simultaneidade define o limite máximo para a rapidez com que as funções em uma conta podem aumentar em resposta ao aumento das solicitações.

Importante: a taxa de escalabilidade da simultaneidade é um limite em nível de função. Cada função na conta pode ser escalada independentemente das outras funções. A taxa de escalabilidade da simultaneidade também difere do limite de simultaneidade no nível da conta, que fornece a quantidade total de simultaneidade disponível para as funções.

**Configuração máxima da simultaneidade **

A configuração máxima da simultaneidade limita o máximo de execuções simultâneas da sua função do Lambda para não exceder um valor configurado. Quando você define a simultaneidade máxima para uma origem de evento, o valor somente se aplica a essa origem de evento específica. Todas as origens de eventos adicionais sem simultaneidade máxima usam a cota de simultaneidade restante da conta ou a simultaneidade reservada.

A configuração máxima da simultaneidade e a simultaneidade reservada podem ser usadas em conjunto. É uma prática recomendada não definir a configuração máxima da simultaneidade como um valor superior à simultaneidade reservada da função, pois isso pode causar controle de utilização.

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

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

Para verificar quantas mensagens na fila do Amazon SQS precisam ser processadas, analise a métrica ApproximateNumberOfMessagesVisible.

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 erros de invocação, aumente o tamanho do lote na notificação do evento. Aumente o tamanho do lote até que a métrica de duração aumente com mais rapidez do que a métrica de tamanho do lote. Para obter mais informações, consulte Monitoring functions on the Lambda console.

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. Para obter mais informações, consulte ReceiveMessage.

Informações relacionadas

Using Lambda with Amazon SQS

Managing AWS Lambda function concurrency

AWS OFICIAL
AWS OFICIALAtualizada há um mês