[Jderobot-admin] Caída de zabbix_server este fin de semana

Oscar Garcia oscar.robotica en linaresdigital.com
Mar Dic 4 10:51:35 CET 2012


El 03/12/2012 17:33, Oscar Garcia escribió:
> He estado mirando el servidor zabbix y parece que el pasado sábado cayó
> (el proceso zabbix_server).


Tal y como me imaginaba todo fue debido a, de nuevo, estado de carga muy 
elevado (consumo de memoria por parte de los procesos apache2).

En el archivo adjunto os muestro una comparativa temporal entre el 
número de procesos apache2, la carga del sistema (load5), la CPU libre 
(idle) y la memoria total libre (contando swap, pero no tiene en cuenta 
la caché de disco, buffers, etc).

Se levantan procesos apache2 cuando los actuales no son capaces de 
atender las peticiones HTTP entrantes, por lo que significa que a esas 
horas hubo un aumento de peticiones al servidor web que originó la 
creación de más subprocesos y, por lo tanto, consumir toda la RAM del 
servidor.

Supongo que el módulo es prefork y que la RAM del servidor sigue siendo 
de sólo 2 GB de RAM, por lo que la configuración por defecto de apache 
debe ser cambiada:

<IfModule mpm_prefork_module>
     StartServers          5
     MinSpareServers       5
     MaxSpareServers      10
     MaxClients          150
     MaxRequestsPerChild   0
</IfModule>

Esto funciona de la siguiente manera: si quedan menos de 5 procesos 
inactivos (sin trabajo) se crea uno adicional y si hay más de 10 
procesos inactivos se mata a uno de ellos. Es un funcionamiento dinámico 
que tiene un límite inferior (5 procesos hijos inactivos más el padre, 
6) y un número máximo (150 más el padre, 151).

El problema es que la máquina no puede con más de 20 procesos como 
podéis ver en las estadísticas comparativas que os adjunto, por lo que 
deberíamos cambiar MaxClients a 30 o, como máximo, a 40. Una vez pasado 
un tiempo con ese valor se puede decidir si aumentar/disminuir ese valor 
gradualmente hasta dar con un valor óptimo o bien apostar por un 
acelerador web.

Por cierto, cuando todos los procesos hijos de apache2 están sirviendo 
peticiones las nuevas entrantes no se descartan, se quedan en cola de 
espera hasta llenar la cola del listen (por defecto 511 conexiones, se 
puede cambiar con ListenBackLog), a partir de ese momento daría 
"conexión rechazada". Yo bajaría el backlog a 20/30 para que los 
usuarios reciban un error cuando el servidor no pueda con su alma que 
hacerlos esperar posiblemente un minuto o así a ver sus páginas aparecer.

En definitiva, me alegra saber que en un único incidente monitorizado se 
ha dado con el problema y la solución, espero que la apliquéis rápido 
antes de que vuelva a caer de nuevo el servidor.

PD: Pensando en otros motivos que puedan provocar que los servicios 
apache2 tarden mucho en responder y fuercen la creación de nuevos para 
atender nuevas peticiones, he pensado en la posibilidad de que páginas 
"atascadas" como http://jderobot.org/index.php/Oscar_Garcia_WP sean las 
culpables de esa acumulación de procesos. Habrá que investigar el motivo 
por el que dichas páginas se quedan colgadas, pero eso no exime el hecho 
de que el servidor web sigue estando sobredimensionado.

Un saludo.
------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre     : agrupacion.png
Tipo       : image/png
Tamaño     : 32405 bytes
Descripción: no disponible
Url        : http://gsyc.escet.urjc.es/pipermail/jderobot-admin/attachments/20121204/26797d73/attachment-0001.png 


More information about the Jderobot-admin mailing list