Control de carga automático para servidores dedicados

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

0 0 votos
Article Rating
5 Comments
Más antiguo
Más nuevo Más votado
Opiniones en línea
Ver todos los comentarios
Jose Alberto
Jose Alberto
13 años antes

Me parece interesante. Voy a intentar mejorarlo con un log que guarde en que circunstancias se ha producido el reinicio y si puede ser con información detallada de que procesos estaba ejecutando el servidor web en ese momento.:
date >> /var/log/httprestart.log
ps aux | grep http >> /var/log/httprestart.log

Miguel A.
Miguel A.
13 años antes

Esto solucionaría la caída del servidor cuando se satura de conexiones http?? ahorraría tener que reiniciarlo a través del drag o contactando con soporte??

me estoy iniciando en el mundo de los servidores, asique perdonar si hesoltado alguna burrada..jeje

Un saludo.

Jose Alberto
Jose Alberto
13 años antes

David, yo lo pondría despues del «#restart apache», justo antes de llamar al reinicio del servidor.

De esa forma podremos averiguar que procesos tenía en marcha el servidor antes de reiniciarse y cuantas veces se ha tenido que reiniciar.

Si vemos que son muchas es que algo tenemos mal en la configuración o de programación.

Scroll al inicio