Os tempos de resposta são lentos quando eu faço solicitações para uma API do Amazon API Gateway integrada a uma função do AWS Lambda. Desejo determinar a causa da alta latência.
Resolução
A alta latência deve ser solucionada quando um endpoint de API integrado a uma função do Lambda demora muito para enviar respostas a um cliente. Analise as métricas do API Gateway para identificar a seção do fluxo de solicitação/resposta que está causando alta latência. Depois de determinar a causa da alta latência, é possível trabalhar para reduzir os atrasos.
Filtre as métricas do CloudWatch para revisar as métricas de latência na API
Para identificar a seção do fluxo de solicitação/resposta que está causando alta latência, primeiro execute as seguintes etapas:
- Observe a latência do cliente após enviar uma solicitação para a API.
- Depois de observar a latência geral, abra o console do Amazon CloudWatch. No painel de navegação esquerdo, escolha Métricas, Todas as métricas. Na caixa de pesquisa de métricas, insira APIGateway. Nos resultados da pesquisa, escolha API Gateway, ApiId.
- Na lista de APIs, filtre pela API especificada usando o ID da API ou o nome da API. Depois de filtrar, marque as caixas de seleção IntegrationLatency e Latência.
Observação: o ID e o nome da API estão disponíveis no console do API Gateway.
- Abra a guia Métricas representadas em gráfico. Em Estatística, escolha Máximo. Em Período, escolha 1 minuto. Acima do grafo, selecione o período Personalizado. Escolha o período durante o qual o cliente experimentou alta latência.
- Analise as métricas IntegrationLatency e Latency. Observe os valores e timestamps quando essas métricas tiverem valores altos. Os valores podem explicar a causa da alta latência.
Compare métricas para identificar a causa da alta latência
Continue analisando as métricas relacionadas ao fluxo de solicitação/resposta para descobrir a causa da alta latência:
- Compare a métrica Latency da API Gateway com o valor geral de latência observado no cliente.
Por exemplo, uma API tem uma métrica de Latency com um valor Máximo que é aproximadamente igual ao valor Max Latency no cliente. Esses valores sugerem que o atraso máximo no fluxo de solicitação/resposta é o tempo gasto pela API Gateway para processar as solicitações. O tempo de processamento do API Gateway inclui o tempo necessário para enviar solicitações ao Lambda, aguardar respostas do Lambda e enviar respostas a um cliente.
- Compare a métrica IntegrationLatency com a métrica de Latency da API.
Por exemplo, a métrica IntegrationLatency é aproximadamente igual à métrica Latency. Esses valores indicam que a latência na API é causada principalmente por solicitações de back-end enviadas ao Lambda que estão demorando mais para responder. A métrica IntegrationLatency inclui o tempo entre o envio de uma solicitação pela API Gateway e o recebimento de uma resposta do back-end pela API Gateway
- Quando a métrica IntegrationLatency é baixa quando comparada à métrica de Latência da API, os tempos de resposta do back-end são baixos. Nesse cenário, o processamento das solicitações ou respostas da API leva mais tempo.
Por exemplo, modelos de mapeamento configurados na API ou em um autorizador do API Gateway Lambda podem criar atrasos.
- Quando a métrica de Latência da API é muito menor do que a latência observada no cliente, a rota pode estar causando atrasos. Analise a rota entre o cliente e a API Gateway para confirmar se há algum endpoint intermediário que esteja adicionando atrasos.
Por exemplo, conexões VPN privadas ou proxies podem criar atrasos.
Veja as métricas do Lambda para identificar a causa da alta IntegrationLatency
Por fim, concentre-se nas métricas do Lambda relacionadas ao fluxo de solicitação/resposta para encontrar a causa da alta IntegrationLatency:
- Verifique a métrica de Duration da função do Lambda para confirmar se o tempo de execução da função do Lambda é maior. Se o tempo de execução da função do Lambda tiver aumentado, revise o log do CloudWatch para encontrar a seção do código que está causando alta latência. Por padrão, as funções do Lambda registram as instruções START, END e REPORT nos logs do CloudWatch. Adicione instruções de log personalizadas em cada seção lógica do código da função do Lambda para obter logs detalhados do CloudWatch.
- Se a métrica Duration não mudou durante o período de alta latência no cliente, determine se o tempo de inicialização aumentou. O tempo de inicialização em uma função do Lambda é o tempo gasto para configurar o ambiente de execução para processar uma solicitação. As solicitações que vêm do API Gateway podem exigir um novo ambiente para processamento. Isso é configurado por meio do Lambda. Normalmente, o código que está presente fora do manipulador de funções do Lambda é executado durante o tempo de inicialização. O código que leva mais tempo para ser concluído pode causar atrasos nos tempos gerais de resposta do cliente.
Observação: O tempo de inicialização é conhecido como INIT ou partida a frio.
- Confirme se há algum aumento na Duração do tempo de inicialização verificando as instruções do relatório nos logs de funções do Lambda. O tempo de inicialização alto para algumas solicitações pode causar um aumento na métrica IntegrationLatency do API Gateway.
Informações relacionadas
Trabalhando com métricas para APIs HTTP
Dimensões e métricas do Amazon API Gateway
Monitoramento da execução da API WebSocket com métricas do CloudWatch
Visualização de métricas no console do CloudWatch
Ciclo de vida do ambiente de runtime Lambda