[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