Ir para o conteúdo

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

5 minuto de leitura
0

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:

  1. Observe a latência do cliente após enviar uma solicitação para a API.
  2. 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.
  3. 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.
  4. 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.
  5. 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:

  1. 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.
  2. 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
  3. 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.
  4. 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:

  1. 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.
  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 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.
  3. 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