Certains clients peuvent remarquer une latence élevée lors de la connexion à des applications Web s'exécutant sur des instances Amazon Elastic Compute Cloud (Amazon EC2) enregistrées auprès d'un équilibreur Classic Load Balancer. Comment puis-je résoudre ces problèmes rencontrés avec mon Classic Load Balancer ELB (Elastic Load Balancing) ?

Cette forte latence d'un Classic Load Balancer peut être due à :

  • des problèmes de connectivité réseau ;
  • une configuration incorrecte du Classic Load Balancer ;
  • une utilisation importante de la mémoire RAM sur les instances backend ;
  • une utilisation élevée du processeur sur les instances backend ;
  • une configuration incorrecte du serveur Web sur les instances backend ;
  • des problèmes liés aux dépendances d'application Web s'exécutant sur les instances backend, comme les bases de données externes ou les compartiments Amazon Simple Storage Service (Amazon S3).

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

2.    Veillez à configurer votre Classic Load Balancer de manière adaptée à 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 ce faire, recherchez le champ backend_processing_time.

Pour vérifier si le serveur associé à une instance backend fait l'objet d'une latence élevée, utilisez la commande curl afin de mesurer le temps de chargement du premier octet. Reportez-vous à l'exemple ci-dessous :

[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 valeur Moyenne de la métrique Latence CloudWatch correspondant à votre Classic Load Balancer. Une valeur élevée traduit généralement un problème concernant les instances backend ou les serveurs d'application associés, et non ELB. 

5.    Vérifiez la valeur Maximum de la métrique Latence. Si cette valeur atteint ou dépasse celle du délai d'inactivité, il est probable que les requêtes expirent. Ce problème entraîne l'apparition de l'erreur HTTP 504.

6.    Vérifiez la manière dont la métrique Latence fluctue. Si la métrique atteint des pics à intervalles réguliers ou à certains moments uniquement, il est possible que des problèmes de performances se produisent avec les instances backend. Ces problèmes peuvent survenir en raison de la surcharge provoquée par les tâches planifiées.

7.    Vérifiez la métrique SurgeQueueLength CloudWatch de votre équilibreur ELB. Si les requêtes 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 valeur globale SpilloverCount indique le nombre total de requêtes rejetées. Pour plus d'informations, consultez l'article Comment puis-je résoudre les problèmes de capacité affectant Elastic Load Balancing ?.

8.    Vérifiez si d'éventuels problèmes se produisent au niveau de la mémoire en examinant les processus Apache qui s'exécutent 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 CloudWatch associée à vos instances backend. Recherchez une éventuelle sollicitation élevée du processeur, ou des pics d'utilisation de celui-ci. En cas d'une sollicitation élevée du processeur, envisagez d'augmenter la taille de vos instances.

10.    Vérifiez le paramètre MaxClient applicable aux serveurs Web sur vos instances backend. Celui-ci permet de définir le nombre de requêtes simultanées que l'instance peut traiter. Si vos instances font l'objet d'une latence élevée, sans que la mémoire et le processeur ne soient pour autant sollicités de façon excessive, 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 dernière.

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 si des dépendances de vos instances backend sont à l'origine des problèmes de latence. 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'adresse réseau, par exemple), les services Web distants et les 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 Centre AWS Support.

Date de publication : 10/10/2017

Date de mise à jour : 18/12/2018