Comment résoudre les problèmes de latence liés à mon point de terminaison d'API optimisé pour la périphérie dans API Gateway ?

Lecture de 6 minute(s)
0

J'observe une latence plus importante lorsque des clients envoient des requêtes vers mon API optimisée pour la périphérie dans Amazon API Gateway. Comment déterminer l'origine de la latence afin de résoudre les problèmes ?

Brève description

Pour trouver la source de latence d'un point de terminaison d'API optimisé pour la périphérie, 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 la périphérie, et non aux points de terminaison d'API régionaux. Les API optimisées pour la périphérie 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 »)

Après avoir identifié les événements qui contribuent à la latence, consultez Comment résoudre les problèmes d'augmentation de la latence et réduire cette dernière dans CloudFront ?

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

Vous pouvez également ajouter des variables $context avec journalisation des accès pour une résolution supplémentaire des problèmes de latence.

Pour obtenir des instructions, consultez Comment activer CloudWatch Logs pour résoudre les problèmes liés à l'API REST ou l'API WebSocket de mon API Gateway ?

Requêtes API Gateway intégrées à Lambda

Si vous utilisez AWS Lambda avec API Gateway et que vous voyez une métrique IntegrationLatency élevée, consultez les CloudWatch Logs de votre fonction Lambda. La latence élevée doit être corrigée lorsqu'un point de terminaison d'API intégré à une fonction Lambda met trop de temps à envoyer des réponses à un client. 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.

Pour plus d'informations, consultez Comment puis-je résoudre les problèmes de latence élevée dans mes requêtes API Gateway intégrées à Lambda ?

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.


Informations connexes

Utilisation des métriques pour les API HTTP

Dimensions et métriques Amazon API Gateway

Surveillance de l'exécution de l'API WebSocket avec les métriques CloudWatch

Comment puis-je utiliser les journaux Amazon API Gateway pour résoudre des problèmes ?

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an