De temps à autre, un serveur Web Apache qui exécute une instance Amazon EC2 Linux cesse de réagir. Le journal système de cette instance affiche les messages « oom-killer » ou « failure to fork process », ou d'autres messages indiquant que la mémoire est insuffisante.

Remarque
Pour afficher le journal système d'une instance EC2 à partir de la console EC2, accédez au menu Actions , puis sélectionnez Instance Settings, Get System Log.

Si vous établissez une session de terminal avec l'instance, vous verrez peut-être des arborescences des appels de procédure à l'emplacement correspondant à la distribution de l'instance Linux exécutée, comme /var/log/syslog pour Debian/Ubuntu, /var/log/messages pour Centos/RHEL ou journalctl (pour les systèmes qui utilisent systemd).

En général, cela signifie que la mémoire de l'instance est saturée.

Vous pouvez limiter le nombre de connexions acceptées par le serveur, ainsi que le nombre de processus qu'il démarre. Pour définir cette limite, calculez l'utilisation moyenne de la mémoire d'un processus Apache et divisez la mémoire totale que vous souhaitez allouer à Apache par cette moyenne.

  1. Lancez une session de terminal sur l'instance. Si vous ne parvenez pas à vous connecter, essayez de redémarrer l'instance.
  2. A partir de la session de terminal, exécutez la commande top pour afficher une liste des processus associés à la mémoire dans cette instance. Triez les processus de cette liste par ordre décroissant en fonction du pourcentage de mémoire utilisé. Pour effectuer le tri sur une instance RPM, appuyez sur le touches Maj+O, puis sur n. Sur les autres distributions Linux, sélectionnez l'option correspondante pour trier les processus en fonction de l'utilisation de la mémoire.
  3. Analysez la colonne de valeurs %MEM renvoyées pour les processus Apache et discernez la valeur moyenne.
  4. Si la valeur %MEM d'un ou de plusieurs processus Apache est anormalement élevée comparé aux autres processus Apache, la cause probable est une fuite de mémoire au niveau d'une application Web exécutée sur le serveur. Pour limiter l'impact d'une fuite de mémoire potentielle, vous pouvez remplacer la valeur par défaut de la variable de configuration MaxRequestsPerChild (ou MaxConnectionsPerChild sur Apache 2.4) par 1 000 au lieu de 4 000. Cette valeur de configuration se trouve dans le fichier httpd.conf de l'instance. Cette modification devrait permettre d'atténuer le problème tant que vous n'avez pas encore identifié et réparé la source de la fuite. Si vous pensez qu'une fuite de mémoire est la cause du problème, indiquez la nouvelle valeur de configuration dans le fichier httpd.conf, enregistrez les modifications, puis passez à l'étape 7.
  5. Pour calculer la valeur des variables de configuration ServerLimit et MaxClients (ou MaxRequestWorkers sur Apache 2.4), procédez comme suit :
         a. Si la RAM de l'instance est supérieure à 4 Go, calculez la valeur %MEM moyenne des processus Apache
             et divisez 90 % par cette moyenne. Par exemple, si la valeur %MEM moyenne s'élève à 0,8 %, divisez 90 % (0,9) par 0,8 % (0,008)
             et arrondissez le résultat (112,5) à l'unité inférieure (112 dans ce cas).
         b. Si la RAM de l'instance est inférieure à 4 Go, calculez la valeur %MEM moyenne des processus Apache
             et divisez 80 % par cette moyenne. Par exemple, si la valeur %MEM moyenne s'élève à 0,8 %, divisez 80 % (0,8) par 0,8 % (0,008).
             Le résultat obtenu s'élève ici à 100.
    Remarque
    Le calcul de ces valeurs se base sur l'hypothèse selon laquelle l'instance est un serveur Web dédié. Si vous hébergez d'autres applications sur le serveur, soustrayez le pourcentage total de mémoire utilisée par ces dernières de 90 % ou 80 % avant de procéder au calcul. Les performances peuvent se dégrader si vous exécutez d'autres applications en plus d'Apache sur une instance dont la RAM est supérieure ou égale à 4 Go.
  6. Remplacez les variables de configuration MaxClients (ou MaxRequestWorkers) et ServerLimit dans le fichier httpd.conf de l'instance par la nouvelle valeur, puis enregistrez les modifications. Exemples :
         MaxClients 112
         ServerLimit 112
  7. Pour redémarrer le serveur Web, exécutez la commande suivante à partir d'une session de terminal :
         service httpd graceful

EC2 Linux, serveur Web Apache, httpd, ajuster, réglage, maxclients, apache2.4, HTTP, serverlimit, httpd.conf, mpm, oom, mémoire saturée, plantage, oom-killer


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 : 07/01/2016