Llevaba algunas semanas con problemas en uno de mis servidores dedicados, cada varias horas y sin explicación alguna la carga subía y se quedaba sin memoria, pero el servidor no está sobrecargado, se saturaba sin más.
Para solucionar este tipo de problemas en servidores dedicados hay que controlar la carga del servidor y procesos del servidor web para si es necesario y la carga es elevada realizar un reinicio forzado del servidor web.
La mejor opción es comprobar la carga del servidor (load average) con este script en bash que puede adaptar y mejorar si lo deseas, ayudándote con efecto menéame o digg.
#!/bin/bash loadavg=`uptime | awk '{print $10}'` RESTART="service httpd restart" # bash doesn't understand floating point # so convert the number to an interger thisloadavg=`echo $loadavg|awk -F \. '{print $1}'` if [ "$thisloadavg" -ge "8" ]; then echo "Busy - Load Average $loadavg ($thisloadavg) " httpd -k stop elif [ "$thisloadavg" -le "2" ]; then echo "Okay - Load Average $loadavg ($thisloadavg) " pgrep httpd if [ $? -ne 0 ] # if apache not running then # restart apache $RESTART echo "restart!" else echo "no restart!" fi else echo "waiting...! $loadavg ($thisloadavg)" fi
Guarda este código por ejemplo como /root/checkload.sh
Ahora lo único que tenemos que hacer es añadir un tarea programada o cron en nuestro servidor linux.
*/1 * * * * root sh /root/checkload.sh
Yo tengo puesto el cron cada 10 minutos, en el ejemplo lo hemos puesto para que cada minuto compruebe la carga del servidor por si es muy elevada y es necesario reiniciar el servidor web.
Espero que este script os resulte útil para vuestro servidor web.
vía: zedomax