Por que minha função do Lambda com uma origem de eventos do Amazon SQS não está escalando da maneira ideal?
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
Vídeos relacionados
Conteúdo relevante
- AWS OFICIALAtualizada há 6 meses
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 2 anos