
Varios scripts php se ejecutan a través de crontab en mi CentOS 6.5, cada script php contiene al menos una solicitud de base de datos. Dependiendo del tamaño y tipo del objeto php, el servicio mysqld asigna demasiada memoria física en algunos casos específicos.
A veces, solo hay 15 MB de memoria libre de 1,7 GB, la memoria de intercambio también se asigna tal vez al 95% de uso. Para liberar la memoria del servidor, la única solución alternativa es reiniciar el servidor mysqld, pero después de un par de días la memoria vuelve a estar casi llena.
Para ignorar el reinicio de mysqld, intenté vaciar el caché de consultas usando RESET QUERY CACHE;
y FLUSH QUERY CACHE;
no se cambia nada en el estado de la memoria. También intenté ejecutar sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
pero el estado de la memoria vuelve a ser el mismo.
¿Sabe cómo liberar la memoria física y virtual, por ejemplo, después de cada ejecución de script sin reiniciar el servidor MySQL?
Respuesta1
Si MySQL está consumiendo toda la memoria, entonces debe ajustar sus valores o aumentar la RAM del servidor. Si le ha dicho a MySQL que puede tener 16 GB de RAM pero solo hay 8 GB disponibles, entonces suceden cosas.
No organizas una fiesta para 20 personas en una habitación de hotel promedio sólo para descubrir que la habitación es demasiado pequeña y vuelves a intentarlo la noche siguiente con la esperanza de que luego quepan 20 personas allí. O reservas una sala más grande o invitas a menos personas.