Apache deja de servir después de llegar a la configuración de MaxClients

11

Tengo mi servidor apache configurado con trabajador MPM de la siguiente manera:

<IfModule mpm_worker_module>
    ServerLimit         20
    ThreadLimit         50
    StartServers        3
    MaxClients          1000
    MinSpareThreads     50
    MaxSpareThreads     200
    ThreadsPerChild     50
    MaxRequestsPerChild 10000
</IfModule>

El servidor toma alrededor de 2 millones de solicitudes todos los días. Cuando lleguen las solicitudes, el servidor apache dejará de aceptar una nueva conexión (el navegador no puede conectarse). Y el proceso permanecerá en la lista de procesos. El uso de memoria es de aproximadamente 10% y la CPU es de 0%. Parece que el servidor apache no pudo reciclar los procesos cuando debería.

He encontrado algo relacionado con el bloqueo en los registros de errores:

[Mon Aug 15 12:36:24 2011] [error] child process 11444 still did not exit, sending a SIGKILL
[Mon Aug 15 12:36:24 2011] [error] child process 12090 still did not exit, sending a SIGKILL
[Mon Aug 15 12:36:24 2011] [error] child process 10698 still did not exit, sending a SIGKILL
[Mon Aug 15 12:36:24 2011] [error] child process 12144 still did not exit, sending a SIGKILL
[Mon Aug 15 12:36:24 2011] [error] child process 12032 still did not exit, sending a SIGKILL
[Mon Aug 15 12:36:24 2011] [error] child process 10699 still did not exit, sending a SIGKILL
[Mon Aug 15 12:36:25 2011] [notice] caught SIGTERM, shutting down
[Mon Aug 15 12:37:31 2011] [notice] mod_python: Creating 8 session mutexes based on 20 max processes and 50 max threads.
[Mon Aug 15 12:37:31 2011] [notice] mod_python: using mutex_directory /tmp 
[Mon Aug 15 12:37:31 2011] [notice] Apache/2.2.17 (Ubuntu) mod_python/3.3.1 Python/2.7.1+ mod_ssl/2.2.17 OpenSSL/0.9.8o configured -- resuming normal operations
[Mon Aug 15 15:36:46 2011] [error] server is within MinSpareThreads of MaxClients, consider raising the MaxClients setting
[Mon Aug 15 15:38:48 2011] [error] server reached MaxClients setting, consider raising the MaxClients setting
[Mon Aug 15 16:17:31 2011] [warn] child process 766 still did not exit, sending a SIGTERM
[Mon Aug 15 16:17:31 2011] [warn] child process 767 still did not exit, sending a SIGTERM

¿Algunas ideas? ¡Gracias!


fuente
¿Cuál es tu configuración de keepalive? ¿Realizas algún tipo de sondeo largo con tu aplicación?
regilero

Respuestas:

7

Es posible que desee verificar el estado de su servidor usando mod_status. Es posible que tenga conexiones que no se desconectan y que están atascadas en un estado de "envío de respuesta" (W). Consulte este artículo sobre cómo diagnosticar este Informe de resolución de clientes maxd y modstatus.


fuente