1 votes

Essayer de réduire le nombre de processus apache 2

Je suis sur Debian 6 LAMP avec apache mpm_prefork

J'ai

Timeout 20
KeepAlive On
MaxKeepAliveRequests 80
KeepAliveTimeout 2

<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    ServerLimit      500
    MaxClients            500
    MaxRequestsPerChild   1500
</IfModule>

avec 4 Go de mémoire vive. Le problème est qu'Apache2 lance trop de processus. Chaque fois que je fais top La plupart du temps, un seul processus est en cours d'exécution, alors que le nombre de processus apache2 en sommeil augmente au fil du temps (437 processus à ce jour).

Puis-je savoir pourquoi Apache2 démarre un nouveau processus au lieu d'utiliser celui qui est déjà ouvert ? Et comment puis-je dire à Apache de ne pas ouvrir autant de processus ?

Danke

4voto

growse Points 7740

Vous avez indiqué à Apache que vous souhaitiez pouvoir servir 500 clients simultanément et que vous aviez fixé une limite stricte de 500 pour le pool de processus client.

Au fur et à mesure qu'Apache reçoit des requêtes, il commence à étendre son pool de processus jusqu'à ce qu'il atteigne votre limite.

Étant donné que vous utilisez un serveur préforking, chaque processus ne gère qu'un seul thread de requête, Apache doit donc maintenir un grand nombre de processus dormants afin de gérer le nombre de clients simultanés que vous avez spécifié. Ces processus consomment beaucoup de mémoire.

Vous pouvez soit passer à un modèle MPM avec threading, soit réduire la valeur de MaxClients, soit augmenter la quantité de RAM. Voir les deux http://httpd.apache.org/docs/2.0/mod/prefork.html y http://httpd.apache.org/docs/2.0/mod/mpm_common.html .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X