Processus Apache «httpd», utilisant toute la mémoire de mes serveurs

9

Ma petite instance ec2 avec 1,7 Go de mémoire, exécutant l'AMI Amazon basée sur CentOS, a un problème avec Apache utilisant trop de mémoire qu'il ne le devrait. Si vous regardez la capture d'écran, l'utilisation de la mémoire sera de 90 à 100% jusqu'à ce que je redémarre le service httpd, où il recommencera, augmentant son chemin jusqu'à 90+%.

entrez la description de l'image ici

J'apprécierais vraiment une aide sur la façon de localiser le problème. Est-ce peut-être un comportement apache "normal", pour utiliser toute la mémoire disponible? Ou y a-t-il une fuite possible que je dois traquer. Pour le moment, je suis un peu perplexe quant à ce qui pourrait se passer.

Nous utilisons le préfork Apache MPM, et aucun sql ou quelque chose de similaire - juste apache. Le site est ici .

Amivit
la source
1
Il ne semble pas utiliser de Swap, alors quel est le problème?
HTTP500
Le fait d'utiliser autant de mémoire ne devrait-il pas être un problème? Excusez mon expérience de novice, je suppose que ce pourrait être une hypothèse incorrecte. Peut-être que c'est un comportement normal et qu'Apache est conçu pour utiliser toute la mémoire qu'il peut récupérer, bien qu'il s'agisse d'un site Web à faible trafic?
Amivit
1
J'ai remarqué que vous utilisez NewRelic, qui peut également enregistrer le temps passé dans Apache (peut être utile) si vous ajoutez cette ligne à votre httpd conf: RequestHeader set X-Request-Start "%t"si vous ne l'avez pas déjà fait. Cela apparaîtra comme "Request Queuing" lorsque vous allez dans App Server> Présentation - pourrait vous aider à aller au fond du problème.
KM.

Réponses:

8

Comme l'a dit HTTP500, vous ne devriez probablement pas vous en soucier à moins que la machine ne s'étouffe réellement. Jetez un œil à l' aide! Linux a mangé ma RAM! . Ce n'est pas tout à fait une situation analogue, car vous avez des processus plutôt que des tampons utilisant la RAM, mais ce n'est pas trop loin: la RAM physique de votre machine est une ressource à utiliser, soit avec des tampons du noyau ou des processus de travail Apache de rechange pour gérer rapidement les entrées demandes. Si vous n'utilisez pas de RAM, vous avez payé en trop pour la taille de votre boîte.

Quoi qu'il en soit, si vous souhaitez jouer avec les paramètres MPM, la documentation Apache est http://httpd.apache.org/docs/current/mod/prefork.html

Vous pouvez peut-être réduire les MinSpareServers, StartServers, etc., car vous avez déclaré que le site était à faible trafic. Vous aurez alors plus de RAM libre à consommer par les tampons du noyau à leurs fins néfastes.

cjc
la source
4

Linux utilisant toute votre mémoire est normal, la mémoire qui n'est pas utilisée autrement est réutilisée comme cache disque. voir: linux a mangé mon bélier

Vous pouvez le vérifier en regardant la sortie de free -met vous attendre à voir quelque chose comme ceci:

             total       used       free     shared    buffers     cached
Mem:          7889       6887        101          0        106       2307
-/+ buffers/cache:       5373       3416
Swap:         1903         17       1886

la ligne +/- tampons / cache est celle que vous voulez. Il ajoute de la mémoire cache en mémoire libre pour vous donner une meilleure image de la quantité de mémoire réellement disponible. Dans ce cas, vous voulez faire attention au numéro 3416, pas 101.

Ragoût
la source