Comment résoudre les problèmes de latence élevée de mon ELB Classic Load Balancer ?

Date de la dernière mise à jour : 17/05/2022

Je constate 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 Classic Load Balancer. Comment résoudre le problème de latence lié à Elastic Load Balancing ?

Brève description

La latence élevée sur un Classic Load Balancer est due aux causes suivantes :

  • Problèmes de connectivité réseau
  • Une configuration incorrecte du Classic Load Balancer
  • Utilisation élevée de la mémoire (RAM) sur les instances backend
  • Utilisation élevée du CPU sur les instances backend
  • Une configuration incorrecte 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)

Résolution

1.    Remédiez aux problèmes de connectivité réseau pour votre Classic Load Balancer.

2.    Configurez le Classic Load Balancer pour votre cas d'utilisation.

3.    Identifiez les instances backend qui sont soumises à une forte latence en vérifiant les journaux d'accès de votre Classic Load Balancer. Pour trouver les instances backend ayant des problèmes de latence, examinez le champ backend_processing_time.

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 Average (Moyenne) de la métrique Latency (Latence) CloudWatch pour votre Classic Load Balancer. Une valeur élevée signifie qu'il y a un problème lié aux instances backend ou aux serveurs de dépendance d'application.

5.    Vérifiez la statistique Maximum de la métrique Latency (Latence). Si cette valeur atteint ou dépasse la valeur du délai d'inactivité, les demandes expirent, ce qui entraîne des erreurs HTTP 504.

6.    Vérifiez la manière dont la métrique Latency (Latence) fluctue. Si les métriques atteignent des pics à intervalles réguliers, cela signifie qu'il y a des problèmes de performance avec les instances backend en raison de la surcharge des tâches planifiées.

7.    Vérifiez la métrique CloudWatch SurgeQueueLength pour Elastic Load Balancing. Si les demandes adressées au Classic Load Balancer dépassent la valeur maximale de 1 024, elles sont rejetées et l'erreur HTTP 503 est générée par l'équilibreur de charge. La statistique de somme de la métrique SpilloverCount indique le nombre total de demandes rejetées. Pour plus d'informations, consultez la section Comment résoudre les problèmes de capacité du Classic Load Balancer dans Elastic Load Balancing ?

8.    Vérifiez les problèmes de mémoire en contrôlant 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 CPUUtilization de CloudWatch de vos instances backend. Recherchez toute utilisation de CPU élevée ou les pics d'utilisation de CPU. 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.    Vérifiez les dépendances qui causent des problèmes de latence sur vos instances backend. Celles-ci incluent, sans s'y limiter, les bases de données partagées, les ressources externes (comme les compartiments S3), les connexions aux ressources externes (dans le cadre de la traduction d'adresses réseau (NAT), par exemple), les services Web distants et les serveurs proxy.


Cet article vous a-t-il été utile ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?