Como posso solucionar problemas de latência do meu endpoint de API otimizado para borda no API Gateway?

5 minuto de leitura
0

Estou vendo uma latência maior quando os clientes enviam solicitações para minha API otimizada para borda no Amazon API Gateway. Como faço para encontrar a origem da latência para solução de problemas?

Breve descrição

Para encontrar a origem da latência de um endpoint de API otimizado para borda, determine quanto tempo leva cada uma das seguintes partes do caminho de conexão:

**Importante:**Essas etapas do caminho de conexão se aplicam somente aos endpoints de API otimizados para borda, e não aos endpoints da API regional. As APIs otimizadas para a borda são acessadas por meio de uma distribuição do Amazon CloudFront. Os endpoints regionais da API não são acessados por meio do CloudFront.

  1. Início da conexão com a resolução de nomes DNS
  2. Início da conexão com o handshake do Transmission Control Protocol (TCP) para se conectar ao CloudFront
  3. Início da conexão com o handshake Secure Sockets Layer (SSL) para se conectar ao CloudFront
  4. Início da conexão para enviar a solicitação HTTP do cliente ao CloudFront
  5. Início da conexão com o primeiro byte transferido do CloudFront
  6. Tempo total para a solicitação e a resposta à API
  7. É hora do API Gateway processar a solicitação e responder à localização periférica do CloudFront
  8. É hora de o endpoint de integração responder à solicitação HTTP do API Gateway
  9. É hora do API Gateway responder à localização periférica do CloudFront e do CloudFront responder ao cliente

As partes do caminho de conexão que demoram mais são a fonte da latência.

**Observação:**Você pode usar o AWS X-Ray para rastrear e analisar as solicitações dos usuários à medida que eles trafegam pelas APIs REST do Amazon API Gateway até os serviços subjacentes. O API Gateway oferece suporte ao rastreamento por raio-X para todos os tipos de endpoints da API Gateway REST API nas regiões da AWS onde o X-Ray está disponível. Para ver todas as regiões em que o X-Ray está disponível, consulte a tabela de regiões da AWS.

Resolução

Execute o script Bash curl_for_latency

Para determinar a duração das etapas de 1 a 6 no processo de caminho de conexão da sua API, execute o script Bash curl_for_latency no GitHub.

**Importante:**Certifique-se de substituir os valores de URL, método HTTP e parâmetros para corresponder às informações da sua API.

O script retorna o período de tempo necessário para que sua API conclua as seguintes etapas do caminho de conexão:

  1. Início da conexão com a resolução de nomes DNS (“time_namelookup”)
  2. Início da conexão com o handshake TCP para se conectar ao CloudFront (“time_connect”)
  3. Início da conexão com o handshake SSL para se conectar ao CloudFront (“time_appconnect”)
  4. Início da conexão para enviar a solicitação HTTP do cliente para o CloudFront (“time_pretransfer”)
  5. Início da conexão com o primeiro byte transferido do CloudFront (“time_starttransfer”)
  6. Tempo total para a solicitação e a resposta à API (“time_total”)

Depois de identificar os eventos que estão contribuindo para a latência, consulte Como soluciono problemas e reduzo o aumento da latência do CloudFront?

Verifique quanto tempo o API Gateway leva para processar a solicitação e responder à localização periférica do CloudFront

Analise a métrica de latência da sua API no console do CloudWatch. Em seguida, defina as configurações do gráfico de métricas de latência para intervalo de 1 minuto e Máximo para ver o maior tempo de processamento em um período de um minuto.

Para obter instruções, consulte Exibir métricas do API Gateway no console do CloudWatch.

Verifique quanto tempo o endpoint de integração leva para responder à solicitação HTTP do API Gateway

Analise a métrica IntegrationLatency no console do CloudWatch. Em seguida, defina as configurações do gráfico IntegrationLatency para intervalo de 1 minuto e Máximo para ver o maior tempo de processamento em um período de um minuto.

-ou-

Se você tiver o registro do CloudWatch ativado para sua API, analise os logs em busca de um item de linha semelhante ao seguinte:

Received response. Integration latency: 325 ms

Você também pode adicionar variáveis $context com log de acesso para solucionar problemas adicionais de latência.

Para obter instruções, consulte Como eu ativo o CloudWatch Logs para solucionar problemas com minha API REST API Gateway ou API WebSocket?

Solicitações do Amazon API Gateway integradas ao Lambda

Se você estiver usando o AWS Lambda com o API Gateway e observar uma métrica IntegrationLatency alta, analise os logs do CloudWatch da sua função do Lambda. 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. As inicializações a frio nas funções do Lambda não são registradas na métrica de duração da função; portanto, a latência de integração da sua API pode ser maior que a duração da função. Para ver a duração de sua função com uma inicialização a frio, use AWS X-Ray.

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

Verifique quanto tempo o API Gateway leva para responder à localização periférica do CloudFront e para que o CloudFront responda ao cliente

Considere o tempo total da solicitação e da resposta à API (“time_total”) e, em seguida, subtraia o seguinte:

  • Início da conexão para enviar a solicitação HTTP do cliente para o CloudFront (“time_pretransfer”)
  • Tempo para o API Gateway processar a solicitação e responder à localização periférica do CloudFront (Métrica de latência da sua API)

O resultado é quanto tempo o API Gateway leva para responder à localização periférica do CloudFront e para que o CloudFront responda ao cliente.


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

Como posso usar os registros do Amazon API Gateway para solucionar problemas?