Cualquier sysadmin que alguna vez hubiese manejado un sistema linux y se ha preocupado de observar el consumo de memoria RAM mientras este se encuentra funcionando, habrá notado que a medida que pasa el tiempo las aplicaciones van consumiendo la memoria física poco a poco, sin embargo cuando en el servidor se ejecutan procesos de alta demanda, es probable que este consumo se vea incrementado, haciendo aveces que el sistema tenga que hacer uso de la partición SWAP. Esto parece ocurrir porque Linux maneja un caché de memoria física para poder así mejorar el rendimiento en las respuestas de procesos.
Dependiendo de que tanta demanda tenga el servidor, he decidido forzar una limpieza de memoria cada cierto tiempo con la ayuda del Dios CRON
#!/bin/sh
sync; echo 3 > /proc/sys/vm/drop_caches
Ejecutar este script cada vez que se estime conveniente limpia el CACHE, personalmente recomendaría hacerlo en los momentos de menor uso de los servicios de la máquina.
Espero le sea útil a alguien y a quien le parezca interesante al menos deje un comentário 😀
@rafael campoverde
Hola Rafael, lo que dices es cierto, este comando lo que hace es limpiar la memoria y es útil para limpiarla diariamente tras la carga de trabajo diario, sin embargo aplicar esto cada 20 minutos bordea lo descabellado, es casi tapar el sol con un dedo porque claramente ORACLE terminará por acabar con ella rápidamente.
Yo partiría por asegurarme de que no cuentes con otras aplicaciones que estén consumiendo recursos ¿Solo corre oracle sobre esta máquina?
Buen dia, tengo un problemita y espero me puedan ayudar…. estoy administrando recientemente unos redhat que corren oracle, estos se paran quedando sin memoria fisica y el free me dice que tengo 48mb libres o menos… no se que hacer para que esto no ocurra, consulte con los DBA y me dicen que me dije en el valor “-/+ buffers/cache:” del comando free pero no creo ke sea tan cierto eso.. He visto que el anterior admin de aca ejecuta cada 20 minutos un: “sync; echo 3 > /proc/sys/vm/drop_caches” pero por lo que he leido eso solo limpia la memoria… Read more »
Poto:
“Antes de darselas de sysadmin documentese” ( tu si que lo eres, no?)
Te has lucido.
http://www.kernel-labs.org/?q=cambios2_6_16
“Puesto que la funcionalidad anterior se refiere a objetos limpios (clean), es responsabilidad del usuario volcar los objetos modificados (dirty, más actualizado en memoria que en el disco) mediante la llama al sistema �sync�.”
http://www.linuxinsight.com/proc_sys_vm_drop_caches.html
“As this is a non-destructive operation, and dirty objects are not freeable, the user should run “sync” first in order to make sure all cached objects are freed.”
http://www.google.cl/search?hl=es&q=sync%3B+echo+3+%3E+/proc/sys/vm/drop_caches&start=0&sa=N
realmente sabes que estas haciendo?
ese hack es bastante sucio y peligroso. si estas escribiendo datos al momento de ejecutar ese comando estas haciendo dump fuera del cache del fs antes que alcance el disco..
hay una forma mucho mas segura de hacerlo -> /proc/sys/vm/vfs_cache_pressure
ahi le puedes decir al kernel que prioridad deberia tener cuando se limpian caches de inode/dentry.
Antes de darselas de sysadmin documentese 😉
Gracias, para un novato como yo fue un dato muy útil.