Pourquoi Apache exécute-t-il autant de processus? RAM excessive ici?

17

Je remarque qu'Apache exécute plusieurs processus sur mon serveur LAMP (ubuntu 10.10). J'exécute juste un site Wordpress avec MySQL comme base de données. Il semble que www-data exécute apache2 plus qu'il ne devrait (en utilisant trop de mémoire aussi), ai-je raison:

ID      Owner       Size        Command   
31200   www-data    251236 kB   /usr/sbin/apache2 -k start
20678   www-data    250948 kB   /usr/sbin/apache2 -k start
25781   www-data    248888 kB   /usr/sbin/apache2 -k start
31045   www-data    248844 kB   /usr/sbin/apache2 -k start
19926   www-data    246480 kB   /usr/sbin/apache2 -k start
20749   www-data    239380 kB   /usr/sbin/apache2 -k start
32616   www-data    238632 kB   /usr/sbin/apache2 -k start
8846    mysql   238128 kB   /usr/sbin/mysqld
24178   www-data    234228 kB   /usr/sbin/apache2 -k start
32618   www-data    232344 kB   /usr/sbin/apache2 -k start
32615   www-data    232204 kB   /usr/sbin/apache2 -k start
19805   root    208156 kB   /usr/sbin/apache2 -k start
Trent Scott
la source
C'était le même cas sur mon travail précédent aussi (CentOS). Je supposais juste qu'ils étaient tous des processus enfants qu'apache démarre pour chaque demande.Nous n'avons jamais rencontré de problèmes de performances / mémoire à cause de cela ...
Nandhini Anand
Hmm. Je suis juste inquiet de manquer de mémoire sur ce système car c'est un VPS.
Trent Scott

Réponses:

19

Apache exécute plusieurs processus pour les préparer lorsqu'une demande client arrive. La création d'un processus serveur est lente, il est donc préférable d'en avoir un en attente d'un client.

Pour l'utilisation de la mémoire, vous devez prendre en compte la taille RES du compte (telle qu'affichée en haut), qui est la quantité de mémoire physique utilisée par la tâche.

Pourquoi pensez-vous que vous avez trop de processus apache2 utilisant trop de mémoire? Qu'attendez-vous? Pourquoi vous attendez-vous ainsi?

Paweł Brodacki
la source
C'est sur une image basée sur le cloud. Il semble simplement qu'il utilise plus de mémoire qu'il ne devrait pour un si petit site. Mémoire réelle: 496,36 Mo au total / 92,02 Mo d'espace libre: 1024 Mo au total / 975,93 Mo d'espace libre
Trent Scott
1
@Trenton: Avec la réponse de Pawel, ça sonne bien. À moins que vous ne rencontriez un crash mysql ou quelque chose en raison d'un manque de mémoire, tout devrait bien se passer. Si cela se produit, vous devez rechercher des configurations apache pour limiter ces processus générés.
Nandhini Anand
2
Linux essaiera de conserver la majeure partie de la mémoire utilisée. S'il n'y a rien d'autre à y mettre, il utilisera de la RAM pour le cache et les tampons de disque. La mémoire vide est de la mémoire gaspillée (si vous ne manquez pas de RAM).
Paweł Brodacki
3

Comme l'explique la réponse de Pawel, apache utilise un processus par modèle de requête avec un pool de processus (ou un thread par requête avec mpm_worker).

Vous pourrez peut-être réduire l'utilisation de la mémoire en utilisant un serveur Web basé sur des E / S non bloquantes, comme nginx. De cette façon, le serveur n'a pas besoin de dédier un processus / thread par connexion.

janneb
la source
2

Apache exécutera autant de processus que vous le configurez. La configuration diffère si vous utilisez les modules de multi-traitement préfork ou de travail .

sciurus
la source