¿Por qué Apache ejecuta tantos procesos? ¿RAM excesiva aquí?

17

Noté que Apache está ejecutando múltiples procesos en mi servidor LAMP (ubuntu 10.10). Solo estoy ejecutando un sitio de Wordpress con MySQL como base de datos. Parece que www-data ejecuta apache2 más de lo que debería (usando demasiada memoria también), estoy en lo cierto:

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
fuente
Este fue el mismo caso en mi trabajo anterior también (CentOS). Supuse que todos eran procesos secundarios que apache iniciaba para cada solicitud. Sin embargo, nunca enfrentamos problemas de rendimiento / memoria debido a esto ...
Nandhini Anand
Hmm Solo estoy preocupado por quedarse sin memoria en este sistema ya que es un VPS.
Trent Scott,

Respuestas:

19

Apache está ejecutando múltiples procesos para tenerlos listos cuando llega una solicitud del cliente. Generar un proceso de servidor es lento, por lo que es mejor tener uno esperando a un cliente.

Para el uso de memoria, debe tener en cuenta el tamaño RES de la cuenta (como se muestra en la parte superior), que es la cantidad de memoria física utilizada por la tarea.

¿Por qué crees que tienes demasiados procesos apache2 usando demasiada memoria? ¿Qué esperas? ¿Por qué esperas eso?

Paweł Brodacki
fuente
Esto está en una imagen basada en la nube. Parece que está usando más memoria de la que debería para un sitio tan pequeño. Memoria real: 496.36 MB en total / 92.02 MB libres Espacio de intercambio: 1024 MB en total / 975.93 MB libres
Trent Scott
1
@Trenton: Con la respuesta de Pawel, eso suena bien. A menos que realmente se encuentre con un bloqueo de mysql o algo por falta de memoria, debería estar bien. Si sucede, entonces debe buscar configuraciones de apache para limitar estos procesos generados.
Nandhini Anand
2
Linux intentará mantener la mayor parte de la memoria utilizada. Si no hay nada más que poner, usará RAM para caché y búferes de disco. La memoria vacía es memoria desperdiciada (si no se está quedando sin RAM).
Paweł Brodacki
3

Como explica la respuesta de Pawel, apache usa un proceso por modelo de solicitud con un grupo de procesos (o subproceso por solicitud con mpm_worker).

Es posible que pueda reducir el uso de memoria utilizando un servidor web basado en E / S sin bloqueo, como nginx. De esta forma, el servidor no necesita dedicar un proceso / subproceso por conexión.

janneb
fuente