Des clients font face à une latence élevée lors de la connexion à des applications web exécutées sur des instances Amazon Elastic Compute Cloud (Amazon EC2) enregistrées sur un équilibreur de charge classique. Comment puis-je résoudre cette latence Elastic Load Balancing (ELB) ?

Une latence élevée peut se produire sur un équilibreur de charge classique pour les raisons suivantes :

  • Problèmes de connectivité réseau
  • Mauvaise configuration de l'équilibreur de charge classique
  • Utilisation élevée de la mémoire (RAM) sur les instances backend
  • Utilisation élevée de l'UC sur les instances backend
  • Mauvaise configuration du serveur web sur les instances backend
  • Problèmes liés aux dépendances d'application web exécutées sur les instances backend, telles que des bases de données externes ou des compartiments Amazon Simple Storage Service (Amazon S3)

1.    Résolvez les erreurs de connectivité réseau pour votre équilibreur de charge classique. Pour plus d'informations, consultez Comment résoudre les problèmes de connexion liés à Elastic Load Balancing ? et Dépannage d'un équilibreur de charge classique : connectivité du client.

2.    Assurez-vous de configurer votre équilibreur de charge classique correctement selon votre cas d'utilisation.

3.    Déterminez les instances backend qui rencontrent des problèmes de latence élevée en vérifiant les journaux d'accès de votre équilibreur de charge classique. Examinez backend_processing_time pour rechercher les instances backend qui rencontrent des problèmes de latence.

Pour vérifier qu'un serveur d'application web d'instance backend rencontre des problèmes de latence élevée, utilisez curl afin de mesurer le premier octet de la réponse. Par exemple :

[ec2-user@ip-192.0.2.0 ~]$ for X in `seq 6`; do curl -Ik -w "HTTPCode=%{http_code} TotalTime=%{time_total}\n" http://www.example.com/ -so /dev/null; done

High Latency sample output:
HTTPCode=200 TotalTime=2.452
HTTPCode=200 TotalTime=1.035

Low latency sample output:
HTTPCode=200 TotalTime=0.515
HTTPCode=200 TotalTime=0.013

4.    Vérifiez la statistique Moyenne de la métrique CloudWatch Latency pour votre équilibreur de charge classique. Une valeur élevée signifie qu'il y a un problème lié aux instances backend ou aux serveurs de dépendance d'application plutôt qu'à ELB. 

5.    Vérifiez la statistique Maximum de la métrique Latency. Si la valeur atteint ou dépasse celle du délai d'inactivité, les demandes sont susceptibles d'expirer. Cela se traduit par une erreur HTTP 504 pour les clients.

6.    Recherchez les modèles dans la métrique Latency. Si la métrique atteint des pics à intervalles réguliers ou selon un modèle, cela peut indiquer des problèmes de performance au niveau des instances backend. Ce problème peut être dû au traitement de tâches planifiées.

7.    Vérifiez la métrique CloudWatch SurgeQueueLength de l'ELB. Si les demandes adressées à l'équilibreur de charge classique dépassent la valeur maximum (1024), elles sont rejetées et une erreur HTTP 503 est générée par l'équilibreur de charge. La statistique Somme de la métrique SpilloverCount mesure le nombre total de demandes rejetées. Pour plus d'informations, consultez Comment résoudre les problèmes de capacité liés à Elastic Load Balancing ?

8.    Recherchez d'éventuels problèmes de mémoire en vérifiant les processus Apache sur vos instances backend.

Exemple de commande :

watch -n 1 "echo -n 'Apache Processes: ' && ps -C apache2 --no-headers | wc -l && free -m"

Exemple de sortie :

Every 1.0s: echo –n 'Apache Processes: ' && ps –C apache2 –no-
headers | wc -1 && free –m
Apache Processes: 27
          total     used     free     shared     buffers     cached
Mem:      8204      7445     758      0          385         4567
-/+ buffers/cache:  2402     5801
Swap:     16383     189      16194

9.    Vérifiez la métrique CloudWatch CPUUtilization de vos instances backend. Recherchez toute utilisation d'UC élevée ou les pics d'utilisation d'UC. En cas d'utilisation d'UC élevée, envisagez de recourir à des types d'instance plus importants.

10.    Vérifiez le paramètre MaxClient pour les serveurs web sur vos instances backend, qui définit le nombre de demandes simultanées qu'une instance peut servir. Pour les instances qui présentent une utilisation appropriée de mémoire et d'UC mais une latence élevée, envisagez d'augmenter la valeur MaxClient.

Comparez le nombre de processus générés par Apache (httpd) avec le paramètre MaxClient. Si le nombre de processus Apache atteint fréquemment la valeur MaxClient, envisagez d'augmenter cette valeur.

Exemple de commande :

[root@ip-192.0.2.0 conf]# ps aux | grep httpd | wc -l 15

Exemple de sortie : 

<IfModule prefork.c>
StartServers         10
MinSpareServers      5
MaxSpareServers      10
ServerLimit          15
MaxClients           15
MaxRequestsPerChild  4000
</IfModule>

11.    Recherchez d'éventuelles dépendances de vos instances backend pouvant entraîner des problèmes de latence. Cela inclut, sans s'y limiter, des bases de données partagées, des ressources externes (telles que des compartiments S3), des connexions à des ressources externes (telles que des instances NAT), des services web distants et des serveurs proxy.


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.

Date de publication : 10/10/2017

Date de mise à jour : 18/12/2018