La latence est élevée lorsque je me connecte à un Classic Load Balancer Elastic Load Balancing (ELB).
Brève description
Une latence élevée sur un Classic Load Balancer survient dans les cas suivants :
- Problèmes de connectivité réseau
- Mauvaise configuration du Classic Load Balancer
- Utilisation élevée de la mémoire (RAM) sur les instances backend
- Utilisation élevée du processeur sur les instances backend
- Mauvaise configuration du serveur Web sur les instances backend
- Problèmes de dépendances d'applications Web s'exécutant sur des instances backend, notamment des bases de données externes ou des compartiments Amazon Simple Storage Service (Amazon S3)
Résolution
1. Résolvez les problèmes de connectivité réseau de votre Classic Load Balancer.
2. Configurez le Classic Load Balancer pour votre cas d'utilisation.
3. Vérifiez les journaux d'accès de votre Classic Load Balancer pour déterminer quelles instances backend sont sujettes à une latence élevée. Examinez le temps backend_processing_time pour trouver les instances backend qui ont des problèmes de latence.
Pour vérifier que le serveur d'application Web d'une instance backend est sujet à une latence élevée, utilisez curl pour mesurer la réponse du premier octet :
[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 Latence d'Amazon CloudWatch pour votre Classic Load Balancer. Si la valeur est élevée, c'est qu'un problème existe au niveau des instances backend ou des serveurs de dépendance des applications.
5. Vérifiez la statistique Maximale de la métrique Latence. Si la valeur atteint ou dépasse la valeur du délai d'inactivité, les requêtes sont interrompues et entraînent des erreurs HTTP 504.
6. Vérifiez les modèles de la métrique Latence. Des pics de métrique à intervalles réguliers indiquent des problèmes de performance des instances backend, dus à la surcharge des tâches planifiées.
7. Vérifiez la métrique SurgeQueueLength de CloudWatch pour ELB. Si les demandes adressées à Classic Load Balancer dépassent la valeur maximale (1 024), elles sont rejetées et l'équilibreur de charge génère une erreur HTTP 503. La statistique de la somme de la métrique SpilloverCount mesure le nombre total de requêtes rejetées. Pour en savoir plus, reportez-vous à Comment résoudre les problèmes de capacité de Classic Load Balancer dans ELB ?
8. Examinez l'Apache traité sur vos instances backend pour vérifier les problèmes de mémoire.
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. Identifiez une utilisation élevée du processeur ou des pics d'utilisation du processeur. En cas d'utilisation élevée du processeur, mettez à niveau vos instances vers un type d'instance de plus grande capacité.
10. Vérifiez le paramètre MaxClient pour les serveurs Web sur vos instances backend. Ce paramètre définit le nombre de requêtes simultanées que l'instance peut traiter. Augmentez la valeur MaxClient pour les instances dont la mémoire et l'utilisation du processeur sont appropriées et qui présentent une latence élevée.
Comparez le nombre de processus générés par Apache (httpd) au paramètre MaxClient. Si le nombre de processus Apache atteint fréquemment la valeur MaxClient, augmentez-la.
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 à l'origine de problèmes de latence sur vos instances backend.
Voici quelques-unes des dépendances susceptibles de causer des problèmes de latence :
- bases de données partagées, ressources externes, notamment les compartiments S3
- connexions de ressources externes, notamment les instances de traduction d'adresses réseau (NAT)
- services Web distants
- serveurs proxy
Informations connexes
Surveiller votre Classic Load Balancer