Les clients ont parfois des difficultés à se connecter à mon équilibreur de charge, avec le message d'erreur HTTP 503 : Service non disponible ou HTTP 504 : Dépassement du délai de la passerelle. Je surveille mon équilibreur de charge à l'aide d'Amazon CloudWatch et j'ai remarqué une augmentation significative de la statistique max de la métrique SurgeQueueLength, qui fournit le nombre total de requêtes en cours de soumission (placées en file d'attente) pour une instance enregistrée.

Remarque
Lorsque la valeur max de SurgeQueueLength est dépassée, la statistique sum de la métrique SpilloverCount commence à calculer le nombre total de requêtes rejetées en raison d'une file d'attente saturée. La valeur max de SurgeQueueLength est 1204.

La longueur de file d'attente des hausses est définie par le nombre de requêtes placées en file d'attente par Elastic Load Balancing (ELB). Ces requêtes sont placées dans la file d'attente lorsque les systèmes principaux ne parviennent pas à traiter les requêtes entrantes à mesure que les demandes sont reçues. La statistique max de la métrique SurgeQueueLength d'un équilibreur de charge peut être élevée pour plusieurs raisons, notamment :

  • Surcharge des instances principales : les ressources des instances principales( CPU, mémoire ou réseau) peuvent être surchargées et incapables de traiter correctement les requêtes entrantes.
  • Problèmes de dépendance d'application : les applications web modernes peuvent avoir plusieurs dépendances vis à vis de ressources externes telles que des bases de données, des compartiments S3 ou d'autres applications. En cas de problèmes de performances liés aux dépendances externes d'une application, les performances de l'application sont affectées. Par exemple, si une application dépend d'une table de base de données qui n'est pas correctement indexée, les performances de la base de données peuvent avoir un impact négatif sur les performances de l'application.
  • Connexions max atteintes : les serveurs web principaux ont peut-être atteint la limite maximale de connexions autorisées et dans ce cas, ils ne sont pas en mesure de traiter les nouvelles requêtes.

Pour atténuer les problèmes liés à une longueur de file d'attente des hausses élevée et au décompte de débordement élevé qui peut en résulter, procédez comme suit :

  1. Activez Auto Scaling avec Elastic Load Balancing, comme décrit dans Répartition de la charge de votre groupe Auto Scaling dans le Manuel du développeur Auto Scaling.
  2. Utilisez Amazon CloudWatch pour surveiller votre équilibreur de charge, comme décrit dans Surveiller votre équilibreur de charge à l'aide d'Amazon CloudWatch.
  3. Utilisez Amazon CloudWatch pour surveiller la métrique CPUUtilization de vos instances principales, comme décrit dans Activation ou désactivation de la surveillance détaillée sur une instance Amazon EC2 pour déterminer si l'utilisation de l'UC connaît un pic excessif. Pour consulter les statistiques d'une instance Amazon EC2 spécifique, consultez Obtenir les statistiques d'une instance EC2 spécifique. Si l'utilisation de l'UC connaît un pic, vos instances principales sont probablement trop occupées par le traitement des requêtes existantes pour en accepter de nouvelles. Dans ce cas de figure, il peut être utile de redimensionner vos instances principales ou de les faire évoluer vers un type doté d'une meilleure puissance de traitement, par exemple une instance optimisée pour le calcul (C4). Pour en savoir plus sur les types et les capacités des instances Amazon EC2, consultez Instances Amazon EC2.
  4. Suivez les recommandations relatives à la résolution des erreurs HTTP spécifiques renvoyées par votre équilibreur de charge décrites dans Résolution des problèmes liés à Elastic Load Balancing : erreurs HTTP. En général, les problèmes liés à la charge renvoient les messages d'erreur HTTP 503 : Service non disponible ou HTTP 504 : Dépassement du délai de la passerelle.
  5. Si vous constatez que la longueur de la file d'attente des hausses augmente suite au dépassement par les serveurs web principaux de la limite maximale de connexions autorisées, augmentez le nombre de processus enfant ou le nombre de threads disponibles pour chaque processus. Par exemple, le fichier de configuration de serveur web Apache suivant peut être modifié afin d'augmenter les processus enfant ou le nombre de threads par processus :
       StartServers                 8
       MinSpareServers          5
       MaxSpareServers         20
       ServerLimit                   256
       MaxClients                   256
       MaxRequestsPerChild 4000
  6. Il est fréquent que le trafic d'un serveur web augmente au fil du temps. Dans ce cas, vos instances peuvent être surexploitées, ce qui affecte les performances. Pour résoudre ce problème, envisagez d'augmenter la capacité comme décrit dans Redimensionnement de votre instance.

Elastic Load Balancing, VPC, SurgeQueueLength, CPUUtilization, Amazon CloudWatch, performance, ressources insuffisantes, configuration de serveur web, capacité


Cette page vous a-t-elle été utile ? Oui | Non

Retour au Centre de connaissances AWS Support

Vous avez besoin d'aide ? Consultez le site du Centre AWS Support.