Si tienes muchos tráfico o consultas a SQL que devoran memoria, seguro que eventualmente tu servidor se queda al borde de consumir el 100% de la memoria. Apache aumenta el uso del espacio compartido (swap) y MySQL comienza a tener paradas por esta carga y falta de memoria para completar procesos de forma ágil. Cuando esto sucede el disco duro empieza a funcionar como memoria haciendo que los procesos sean cada vez más lentos.
La RAM se consume día a día y la única forma de liberarla es un reinicio de servicios que podemos programar con un sencillo script que comprueba el porcentaje de memoria libre para determinar si hay o no que reiniciar el Apache y MySQL.
Este el script bash que podéis utilizar y donde debéis actualizar la forma de reiniciar Apache y MySQL, en este ejemplo está personalizado para Plesk.
#!/bin/bash
threshold=95 #porcentaje
total=$(free | grep "Mem:" | awk '{print $2}')
remaining=$(free | grep "Mem:" | awk '{print $4}')
current=$(echo "scale=0;100-$remaining * 100 / $total" | bc -l)
if [ $current -gt $threshold ]
then
service httpd stop
service mysqld restart
service httpd start
echo "Restarted apache and mysql on `date +'%Y-%m-%d %H:%M:%S'`. RAM utilization at ${current}%"
>> /var/log/apache_mysql_restarter.log
fi
Ahora solo tienes que poner el script en cron para que cada varias horas compruebe el estado de la memoria. Además tendrás un log para seguir e proceso, este log lo puedes rotar si lo deseas.
Comentarios recientes