Comment 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. Comment déterminer la cause d'une latence élevée ?

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. Passez en revue les métriques d'API Gateway afin d'identifier la section du flux de demande/réponse à l'origine d'une latence élevée. Une fois que vous avez déterminé la cause de la latence élevée, vous pouvez travailler pour réduire les retards.

Filtrez les métriques CloudWatch pour consulter les mesures de latence sur l'API

Pour identifier la section du flux de demande/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, choisissez Métriques, , Toutes les métriques.. Dans la zone de recherche des métriques, saisissez APIGateway. Dans les résultats de la recherche, choisissez 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 Integration/Latence et Latence.
    Remarque : L'ID et le nom de l'API sont disponibles sur la console API Gateway.
  4. Ouvrez l'onglet Graphed metrics (Métriques graphiques). Pour Statistic,(Statistique), choisissez Maximum. Pour Period (Période), choisissez 1 minute. Au-dessus du graphique, sélectionnez la période Custom (Personnalisé). Choisissez la période pendant laquelle le client a connu une latence élevée.
  5. Passez en revue les mesures de latence et de latence d'intégration. Notez les valeurs et les horodatages lorsque ces mesures ont des valeurs élevées. Les valeurs peuvent être la cause d'une latence élevée.

Comparez les indicateurs pour identifier la cause d'une latence élevée

Continuez à examiner les mesures relatives au flux de requêtes/réponses afin de déterminer la cause de la latence élevée :

  1. Comparez la métrique Latence de la passerelle API à la valeur de latence globale observée chez le client.
    Par exemple, une API possède une métrique de Latence dont la valeur maximale est approximativement égale à la valeur de latence maximale du client. Ces valeurs suggèrent que le délai maximal dans le flux de demande/réponse est le temps nécessaire à API Gateway pour traiter les demandes. Le temps de traitement d'API Gateway inclut le temps nécessaire pour envoyer des demandes à Lambda, attendre les 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 au niveau de l'API est principalement due aux demandes de backend envoyées à Lambda qui mettent plus de temps à répondre. La métrique Integration/Latence inclut le délai entre l'envoi d'une demande 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 demandes 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 autorisateur Lambda API Gateway peuvent tous deux entraîner des retards.
  4. Lorsque la métrique de Latence de l'API est bien inférieure à la latence observée chez le client, l'itinéraire peut entraîner des retards. Passez en revue l'itinéraire entre le client et API Gateway pour vérifier s'il existe des points de terminaison intermédiaires qui entraînent des retards.
    Par exemple, les connexions VPN privées ou les proxys peuvent entraîner des retards.

Consultez 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êtes/réponses pour trouver la cause d'une Latence d'intégration élevée :

  1. Vérifiez la métrique de 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 à l'origine d'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 fonction Lambda pour obtenir des journaux CloudWatch détaillés.
  2. Si la métrique de Durée n'a pas changé pendant la période de latence élevée sur le client, déterminez si le temps d'initialisation a augmenté. Le temps d'initialisation d'une fonction Lambda est le temps nécessaire pour configurer l'environnement d'exécution afin de traiter une demande. Les demandes provenant d'API Gateway peuvent nécessiter un nouvel environnement de traitement. Ceci est configuré via Lambda. En général, le code présent en dehors du gestionnaire de fonctions Lambda s'exécute pendant l'initialisation. Un code qui prend plus de temps à compléter 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 y a une augmentation de la durée du temps d'initialisation en vérifiant les instructions du rapport dans les journaux des fonctions Lambda. Un temps d'initialisation trop long pour certaines demandes peut entraîner une augmentation de la métrique IntegrationLatency pour API Gateway.

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

Affichage des métriques sur la console CloudWatch

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

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