Tengo un servidor Ubuntu 9.10 de 64 bits que parece consumir toda la memoria disponible. Según mis gráficos de munin, casi toda la memoria utilizada se encuentra en la caché de intercambio, la caché y la caché de losa. (Supongo que esto se refiere a cachés de memoria virtual, ¿estoy en lo cierto al suponer esto?)
Una vez que el uso de la memoria se acerca al 100%, algunos (aunque no todos) servicios del sistema, como SSH, se vuelven lentos y no responden. Después de reiniciar el sistema, el rendimiento y el uso de la memoria se vuelven normales por un tiempo.
Algunas cositas interesantes:
- El sistema ejecuta Apache 2, MySQL, Munin y sshd.
- Los picos de uso de memoria ocurren a la misma hora todas las noches (a las 10 p. m. en punto).
- Parece no haber nada en el crontab para ninguno de los usuarios, y nada en /etc/cron.d/* fuera de lo común, y mucho menos algo que pudiera ocurrir a las 10 p.m.
Mi pregunta es, ¿cómo puedo saber qué está causando la pérdida de memoria? Probé las utilidades habituales (por ejemplo, ps, top, etc.) pero parece que no encuentro nada inusual.
¿Algunas ideas? ¡Gracias de antemano!
Respuesta1
¿Estás seguro de que está relacionado con la memoria? Los cachés no deberían consumir toda la memoria; son temporales y dinámicos, y se reasignan cuando se necesita memoria activa. Los cachés solo están ahí para acelerar las cosas y hacer uso de la memoria que de otro modo se desperdiciaría.
Probablemente vería si tienes algo más que atasca el sistema. Al utilizar Top, ¿observa una carga elevada del sistema? ¿Qué es en esos momentos en comparación con los tiempos "normales"? ¿Se clasifica principalmente en uso de CPU y uso de memoria activa?
¿Intentaste ejecutar iotop para ver la E/S del disco y ver si algo está golpeando la unidad?
¿Cómo son todos los crontabs?
¿Ha tomado una instantánea de ps durante el día varias veces y la ha comparado alrededor de las 10:00 para ver qué procesos han aparecido?
A largo plazo, ¿qué tal las conexiones de red con netstat? ¿Algo inusual entra o sale del sistema en ese momento?
Parece que puede estar reconstruyendo o indexando una base de datos del sistema como "localizar", pero no debería ralentizar el sistema hasta detenerlo.
Respuesta2
El uso de la memoria y la lentitud son síntomas del mismo problema. Algo sucede en ese momento que hace que la memoria caché del disco del sistema se bloquee. El sistema utiliza cada gota de memoria para evitar el exceso de E/S del disco, pero aún así falla.
Esto es más común cuando muchas lecturas de disco ocurren en áreas del disco que no se han leído recientemente. Los datos utilizados recientemente que se pueden volver a utilizar se eliminan de la memoria caché y, cuando es necesario volver a leerlos, deben competir con el flujo de lecturas existente.
Busque algún proceso que realice muchas E/S de disco. Por ejemplo, updatedb
o algún tipo de script de respaldo. Si resulta ser una herramienta casera, puede ser útil cambiarla para omitir el caché del disco y no forzar la salida de otras cosas del caché. Puede ser útil ionice
para que no dañe tanto las lecturas urgentes.