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.
vía: KrazyWorks