Comment déterminer la cause de la latence des requêtes pour mon point de terminaison d'API optimisé pour les périphériques dans API Gateway ?

Date de la dernière mise à jour : 04/11/2021

J'observe une latence plus importante lorsque des clients envoient des requêtes vers mon API optimisée pour les périphériques dans Amazon API Gateway. Comment puis-je déterminer l'origine de la latence ?

Brève description

Pour trouver la source de latence d'un point de terminaison d'API optimisé pour les périphériques, déterminez la durée de chacune des parties suivantes du chemin de connexion :

Important : ces étapes de chemin de connexion s'appliquent uniquement aux points de terminaison d'API optimisés pour les périphériques, et non aux points de terminaison d'API régionaux. Les API optimisées pour les périphériques sont accessibles via une distribution Amazon CloudFront. Les points de terminaison d'API régionaux ne sont pas accessibles via CloudFront.

  1. Début de la connexion jusqu'à la résolution de nom DNS
  2. Début de la connexion jusqu'à la prise de contact TCP (Transmission Control Protocol) en vue de se connecter à CloudFront
  3. Début de la connexion jusqu'à la prise de contact SSL (Secure Sockets Layer) en vue de se connecter à CloudFront
  4. Début de la connexion jusqu'à l'envoi de la requête HTTP client vers CloudFront
  5. Début de la connexion jusqu'au transfert du premier octet vers CloudFront
  6. Temps total pour la requête et la réponse à l'API
  7. Temps nécessaire à API Gateway pour traiter la requête et la répondre à l'emplacement périphérique CloudFront
  8. Temps nécessaire au point de terminaison de l'intégration pour répondre à la requête HTTP d'API Gateway
  9. Temps nécessaire à API Gateway pour répondre à l'emplacement de CloudFront, et à CloudFront pour répondre au client

Les parties du chemin de connexion qui prennent le plus de temps sont la source de la latence.

Remarque : vous pouvez utiliser AWS X-Ray pour suivre et analyser les requêtes des utilisateurs lorsqu'elles transitent par le biais de vos API REST Amazon API Gateway vers les services sous-jacents. API Gateway prend en charge le traçage X-Ray pour tous les types de points de terminaison d'API REST API Gateway dans les régions AWS où X-Ray est disponible. Pour voir toutes les régions dans lesquelles X-Ray est disponible, veuillez consulter le tableau des régions AWS.

Solution

Exécutez le script Bash curl_for_latency

Pour déterminer la durée des étapes 1 à 6 du processus de chemin de connexion de votre API, exécutez le script Bash curl_for_latency disponible sur GitHub.

Important : assurez-vous de remplacer l'URL, la méthode HTTP et les valeurs des paramètres pour qu'elles correspondent aux informations de votre API.

Le script renvoie la période de temps nécessaire à votre API pour effectuer les étapes de chemin de connexion suivantes :

  1. Début de la connexion jusqu'à la résolution de nom DNS ("time_namelookup")
  2. Début de la connexion jusqu'à la prise de contact TCP en vue de la connexion à CloudFront ("time_connect")
  3. Début de la connexion jusqu'à la prise de contact SSL en vue de la connexion à CloudFront ("time_appconnect")
  4. Début de la connexion jusqu'à l'envoi de la requête HTTP client à CloudFront ("time_pretransfer")
  5. Début de la connexion jusqu'au transfert du premier octet vers CloudFront ("time_starttransfer")
  6. Temps total pour la requête et la réponse à l'API ("time_total")

Vérifiez le temps nécessaire à API Gateway pour traiter la requête et répondre à l'emplacement périphérique CloudFront

Consultez la métrique de latence de votre API dans la console CloudWatch. Ensuite, configurez les paramètres du graphique de métrique de la latence pour un intervalle d'une minute et un maximum pour voir le temps de traitement le plus long dans une période d'une minute.

Pour obtenir des instructions, veuillez consulter la rubrique Afficher les métriques API Gateway dans la console CloudWatch.

Vérifiez le temps nécessaire au point de terminaison d'intégration pour répondre à la requête HTTP d'API Gateway

Consultez la métrique IntegrationLatency dans la console CloudWatch. Ensuite, configurez les paramètres du graphique IntegrationLatency pour l'intervalle d'une minute et le maximum pour voir le temps de traitement le plus long dans une période d'une minute.

-ou-

Si la journalisation CloudWatch est activée pour votre API, consultez les journaux pour un élément de ligne similaire à ce qui suit :

Received response. Integration latency: 325 ms

Important : si vous utilisez AWS Lambda avec API Gateway et que vous voyez une métrique IntegrationLatency élevée, consultez également les CloudWatch Logs de votre fonction Lambda. Les démarrages à froid dans les fonctions Lambda ne sont pas enregistrés dans la métrique de durée de la fonction, de sorte que la latence d'intégration de votre API peut être supérieure à la durée de la fonction. Pour connaître la durée de votre fonction avec un démarrage à froid, utilisez AWS X-Ray.

Vérifiez le temps nécessaire à API Gateway pour répondre à l'emplacement périphérique de CloudFront et pour que CloudFront réponde au client

Prenez le temps total de la requête et de la réponse à l'API (« time_total »), puis soustrayez ce qui suit :

  • Début de la connexion jusqu'à l'envoi de la requête HTTP client à CloudFront ("time_pretransfer")
  • Temps nécessaire à API Gateway pour traiter la demande et répondre à l'emplacement de la périphérie de CloudFront (métrique de latence de votre API)

Le résultat est le temps nécessaire à API Gateway pour répondre à l'emplacement périphérique de CloudFront et à CloudFront pour répondre au client.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?