Como solucionar problemas de alta latência nas minhas solicitações do API Gateway que estão integradas ao Lambda?

5 minuto de leitura
0

Os tempos de resposta são lentos quando faço solicitações para uma API do Amazon API Gateway integrada a uma função do AWS Lambda. Como determino 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, você pode trabalhar para reduzir os atrasos.

Filtrar as métricas do CloudWatch para analisar 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:

  1. Observe a latência do cliente depois de enviar uma solicitação à API.
  2. Depois de observar a latência geral, abra o console do Amazon CloudWatch. No painel de navegação esquerdo, escolha Metrics (Métricas), All metrics (Todas as métricas). Na caixa de pesquisa de métricas, insira APIGateway. Nos resultados da pesquisa, escolha API Gateway, ApiId.
  3. Na lista de APIs, filtre a API especificada usando o ID da API ou o nome da API. Depois de filtrar, marque as caixas de seleção IntegrationLatency e Latency.
    Observação: o ID e o nome da API estão disponíveis no console do API Gateway.
  4. Abra a guia Graphed metrics (Métricas em gráfico). Em Statistic (Estatística), selecione Maximum (Máximo). Em Period (Período), selecione 1 minute (1 minuto). Acima do gráfico, selecione o período Custom (Personalizado). Escolha o período durante o qual o cliente teve alta latência.
  5. Analise as Métricas de IntegrationLatency e Latency. Observe os valores e os registros de data e hora quando essas métricas tiverem valores altos. Os valores podem explicar a causa da alta latência.

Comparar 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:

  1. Compare a métrica Latency do API Gateway com o valor geral de latência observado no cliente.
    Por exemplo, uma API tem uma métrica Latency com um valor Maximum (Máximo) que é aproximadamente igual ao valor Max Latency (Latência máxima) no cliente. Esses valores sugerem que o atraso máximo no fluxo de solicitação/resposta é o tempo gasto pelo 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.
  2. Compare a métrica IntegrationLatency com a métrica 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 backend enviadas ao Lambda que estão demorando mais para responder. A métrica IntegrationLatency inclui o tempo entre o API Gateway enviar uma solicitação e o API Gateway receber uma resposta do backend
  3. Quando a métrica IntegrationLatency é baixa quando comparada à métrica Latency da API, os tempos de resposta do backend 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 Lambda do API Gateway podem criar atrasos.
  4. Quando a métrica Latency 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 o API Gateway para confirmar se há algum endpoint intermediário que esteja gerando atrasos.
    Por exemplo, conexões de VPN privadas ou proxies podem criar atrasos.

Visualizar métricas do Lambda para identificar a causa do alto valor de IntegrationLatency

Por fim, concentre-se nas métricas do Lambda relacionadas ao fluxo de solicitação/resposta para encontrar a causa do valor de IntegrationLatency:

  1. Verifique a métrica 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, analise 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 declarações de log personalizadas em cada seção lógica do código da função do Lambda para obter logs detalhados do CloudWatch.
  2. 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 necessário para configurar o ambiente de execução para processar uma solicitação. As solicitações provenientes 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. Um código que leva mais tempo para ser concluído pode causar atrasos nos tempos gerais de resposta ao cliente.
    Observação: o tempo de inicialização é conhecido como INIT ou inicialização a frio.
  3. Confirme se há algum aumento na métrica Duration do tempo de inicialização verificando as declaraçõ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

Trabalhar com métricas para APIs HTTP

Dimensões e métricas do Amazon API Gateway

Monitorar a execução da API de WebSocket com métricas do CloudWatch

Visualizar métricas no console do CloudWatch

Ciclo de vida do ambiente de execução do Lambda