Como soluciono problemas de controle de utilização de funções do Lambda com erros de “Taxa excedida” e 429 “TooManyRequestsException”?
Minha função do AWS Lambda está produzindo erros de “Taxa excedida” e 429 “TooManyRequestsException”.
Resolução
Às vezes, as funções do Lambda são limitadas para proteger seus recursos e aplicativos posteriores. Embora o Lambda seja dimensionado automaticamente para acomodar o tráfego de entrada, sua função ainda pode ser limitada por vários motivos.
Para solucionar problemas de limitação do Lambda, incluindo erros de taxa excedida e TooManyRequestsException, consulte as etapas a seguir.
Verificar qual recurso está com controle de utilização
Os erros de controle de utilização podem não ser da sua função do Lambda. Controles de utilização também podem ocorrer em chamadas da API durante a invocação da função.
Para confirmar qual recurso está com controle de utilização, verifique os recursos a seguir.
Verifique os Amazon CloudWatch Logs para ver se há erros de controle de utilização, mas nenhum ponto de dados correspondente nas métricas de controles de utilização do Lambda
Se não houver métricas de controle de utilização do Lambda, esse controle ocorrerá nas chamadas da API no seu código de função do Lambda.
Verifique seu código de função para ver se há chamadas da API com controle de utilização
Se determinadas chamadas da API estiverem controladas, certifique-se de usar o recuo exponencial em seu código para repetir as chamadas da API.
Observação: se você precisar de uma cota maior de transações por segundo (TPS) para uma chamada da API, solicite um aumento na cota de serviço. Nem todas as cotas são ajustáveis.
Verificar as métricas de simultaneidade da sua função
Revise suas métricas do Lambda no Amazon CloudWatch
Verifique a métrica ConcurrentExecutions para sua função na região da AWS onde você vê o controle de utilização.
Comparar a métrica ConcurrentExecutions com a métrica de controle de utilização para o mesmo timestamp
Visualize a estatística Máxima para ConcurrentExecutions e a estatística Soma para Controles de utilização. Veja se o máximo de ConcurrentExecutions está próximo da cota de simultaneidade no nível de conta na Região, junto com os pontos de dados correspondentes no gráfico Controles de utilização.
Verificar se você está excedendo a cota inicial de simultaneidade de expansão para uma determinada região da AWS
Na página Métricas do Lambda no console do CloudWatch, reduza o intervalo do gráfico para 1 minuto. Se você estiver limitado pela escala de expansão, verá um pico de Controles de utilização que corresponde a um padrão de degraus de ConcurrentExecutions no gráfico.
Observação: para contornar os limites de simultaneidade intermitente, você pode configurar a simultaneidade provisionada.
Verificar se há picos nas métricas de Duração da sua função
A simultaneidade depende da duração da função. Se o código da função estiver demorando muito para ser concluído, talvez não haja recursos computacionais suficientes.
Tente aumentar a configuração de memória da função. Em seguida, use o AWS X-Ray e o CloudWatch Logs para isolar a causa dos aumentos de duração.
Observação: alterar a configuração da memória pode afetar as cobranças decorrentes do tempo de execução.
Você pode adicionar a função a uma Amazon Virtual Private Cloud (Amazon VPC). Quando a função está em uma Amazon VPC, consulte How do I give internet access to a Lambda function that's connected to an Amazon VPC? (Como faço para conceder acesso à internet a uma função do Lambda conectada a uma Amazon VPC?)
Verificar se há um aumento nas métricas de Erros para sua função
O aumento de erros pode levar a novas tentativas e causar um aumento geral nas invocações. O aumento das invocações pode levar a um aumento na simultaneidade. Use o CloudWatch Logs para identificar e eliminar erros e fazer com que seu código de função trate de exceções.
Observação: sua função também pode ser controlada com base nas solicitações de invocação por Região (solicitações por segundo), que é 10 vezes sua cota de execuções simultâneas.
Configurar a simultaneidade reservada
Confirmar se você configurou a simultaneidade reservada em sua função
Use o console do Lambda para verificar a configuração de simultaneidade reservada. Se a simultaneidade reservada não estiver configurada, a função usará simultaneidade não reservada. Quando as invocações com funções excedem a simultaneidade não reservada, ocorre o controle de utilização.
Observação: se você configurou uma função com zero simultaneidade reservada, a função será controlada porque não poderá processar nenhum evento. Verifique se aumentou o valor para um número maior que zero.
Analisar a estatística máxima no CloudWatch para sua função
Veja se a métrica da função atinge o valor máximo da métrica ConcurrentExecutions em algum momento.
Aumentar a simultaneidade reservada para sua função para um valor de simultaneidade que impeça que a função seja limitada
Use o console do Lambda para alterar a configuração ou chame a API PutFunctionConcurrency.
Usar o recuo exponencial em seu aplicativo
Para tentar novamente solicitações controladas, é uma prática recomendada usar o recuo exponencial em seu aplicativo que está chamando sua função do Lambda.
Usar uma fila de mensagens não entregues
Para fontes de eventos assíncronos, como Amazon Simple Storage Service (Amazon S3) e Amazon EventBridge, configure sua função com uma fila de mensagens não entregues (DLQ). Em seguida, verifique o tratamento de erros para a configuração de invocação assíncrona. A DLQ detecta todos os eventos que são descartados devido a controles de utilização constantes e pode proteger seus dados se você enfrenta um controle significativo.
Observação: para fontes de eventos do Amazon Simple Queue Service (Amazon SQS), você deve configurar a DLQ na fila do Amazon SQS.
Solicitar um aumento da cota de serviço
Se sua workload exigir uma cota de serviço maior para execuções simultâneas, use o console de cotas de serviço para solicitar um aumento da cota de serviço.
Informações relacionadas
Práticas recomendadas para trabalhar com funções do AWS Lambda
Solucionar problemas de invocação no AWS Lambda
Tratamento de erros e novas tentativas automáticas no AWS Lambda
Vídeos relacionados
Conteúdo relevante
- AWS OFICIALAtualizada há 17 dias
- AWS OFICIALAtualizada há 3 anos
- AWS OFICIALAtualizada há 2 anos