Comment puis-je résoudre les problèmes de latence élevée dans mes requêtes API Gateway intégrées à Lambda ?

Lecture de 5 minute(s)
0

Les temps de réponse sont lents lorsque j'adresse des requêtes à une API Amazon API Gateway intégrée à une fonction AWS Lambda. Je souhaite déterminer la cause de cette latence élevée.

Résolution

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. Examinez les métriques d'API Gateway afin d'identifier la section du flux de requête/réponse qui entraîne une latence élevée. Après avoir déterminé la cause de la latence élevée, vous pouvez travailler à la réduction des délais.

Filtrer les métriques CloudWatch pour examiner les métriques de latence sur l'API

Pour identifier la section du flux de requête/réponse à l'origine d'une latence élevée, effectuez d'abord les étapes suivantes :

  1. Observez la latence du client après avoir envoyé une requête à l'API.
  2. Après avoir noté la latence globale, ouvrez la console Amazon CloudWatch. Dans le volet de navigation de gauche, sélectionnez Métriques, Toutes les métriques. Dans la zone de recherche des métriques, saisissez APIGateway. Dans les résultats de recherche, sélectionnez API Gateway, ApiId.
  3. Dans la liste des API, filtrez l'API spécifiée à l'aide de l'ID ou du nom de l'API. Après le filtrage, cochez les cases IntegrationLatency et Latence.
    Remarque : L'ID et le nom de l'API sont disponibles dans la console API Gateway.
  4. Choisissez l'onglet Graphique des métriques. Pour Statistique, sélectionnez Maximum. Pour Période, choisissez 1 minute. Au-dessus du graphique, sélectionnez la période Personnalisé. Choisissez la période pendant laquelle le client a observé une latence élevée.
  5. Examinez les métriques IntegrationLatency et Latence. Notez les valeurs et les horodatages lorsque ces métriques présentent des valeurs élevées. Les valeurs peuvent expliquer la cause de la latence élevée.

Comparer les métriques pour identifier la cause d'une latence élevée

Continuez à examiner les métriques liées au flux de requête/réponse pour trouver la cause de la latence élevée :

  1. Comparez la métrique Latence d’API Gateway à la valeur de latence globale observée chez le client.
    Par exemple, une API inclut une métrique Latence dont la valeur Maximum est approximativement égale à la valeur de Latence maximale chez le client. Ces valeurs suggèrent que le délai maximal dans le flux de requête/réponse correspond au temps nécessaire à API Gateway pour traiter les requêtes. Le temps de traitement d'API Gateway inclut le temps nécessaire pour envoyer des requêtes à Lambda, attendre des réponses de Lambda et envoyer des réponses à un client.
  2. Comparez la métrique IntegrationLatency à la métrique Latence de l'API.
    Par exemple, la métrique IntegrationLatency est approximativement égale à la métrique Latence. Ces valeurs indiquent que la latence de l'API est principalement due aux requêtes backend envoyées à Lambda qui mettent plus de temps à répondre. La métrique IntegrationLatency inclut le temps entre l'envoi d'une requête par API Gateway et la réception d'une réponse du backend par API Gateway.
  3. Lorsque la métrique IntegrationLatency est faible par rapport à la métrique Latence de l'API, les temps de réponse du backend sont faibles. Dans ce scénario, le traitement des requêtes ou des réponses d'API prend plus de temps.
    Par exemple, les modèles de mappage configurés dans l'API ou dans un mécanisme d’autorisation API Gateway Lambda peuvent tous deux entraîner des retards.
  4. Lorsque la métrique Latence de l'API est très inférieure à la latence observée chez le client, l'itinéraire peut entraîner des retards. Vérifiez l'itinéraire entre le client et API Gateway pour vérifier si des points de terminaison intermédiaires entraînent des retards.
    Par exemple, les connexions VPN privées ou les proxies peuvent entraîner des retards.

Consulter les métriques Lambda pour identifier la cause d'une latence d'intégration élevée

Enfin, concentrez-vous sur les métriques Lambda liées au flux de requête/réponse pour trouver la cause d'une latence d’intégration élevée :

  1. Vérifiez la métrique Durée de la fonction Lambda pour vérifier si le temps d'exécution de la fonction Lambda est plus long. Si le temps d'exécution de la fonction Lambda a augmenté, consultez le journal CloudWatch pour trouver la section de code qui entraîne une latence élevée. Par défaut, les fonctions Lambda enregistrent les instructions START, END et REPORT dans les journaux CloudWatch. Ajoutez des instructions de journal personnalisées à chaque section logique du code de la fonction Lambda pour obtenir des journaux CloudWatch détaillés.
  2. Si la métrique Durée n'a pas changé pendant la période de latence élevée chez le client, déterminez si le temps d'initialisation a augmenté. Le temps d'initialisation dans une fonction Lambda est le temps nécessaire pour configurer l'environnement d'exécution afin de traiter une requête. Les requêtes provenant d'API Gateway peuvent nécessiter un nouvel environnement de traitement. Ce dernier est configuré via Lambda. En règle générale, le code présent en dehors du gestionnaire de fonction Lambda s'exécute pendant la période d'initialisation. Un code qui prend plus de temps à se terminer peut entraîner des retards dans le temps de réponse global au client.
    Remarque : Le temps d'initialisation est appelé INIT ou démarrage à froid.
  3. Vérifiez s'il existe une augmentation de la durée d'initialisation en vérifiant les instructions du rapport dans les journaux de la fonction Lambda. Un temps d'initialisation élevé pour certaines requêtes peut entraîner une augmentation de la métrique IntegrationLatency pour API Gateway.

Informations connexes

Utilisation de métriques pour les API HTTP

Dimensions et métriques Amazon API Gateway

Surveillance de l’exécution de l’API WebSocket à l’aide des métriques CloudWatch

Affichage des métriques sur la console CloudWatch

Cycle de vie de l'environnement d'exécution Lambda