eliminar la memoria RAM en caché de Linux

eliminar la memoria RAM en caché de Linux

Tengo un servidor web que tiene 8 GB de RAM y ejecuta un sitio php bastante intensivo (1 sitio) que realiza manipulación de archivos, gráficos, envío de correos electrónicos, foros, lo que sea. El entorno está lejos de ser estático, lo que me lleva a creer que se podría ganar muy poco almacenando en caché cualquier cosa en la RAM, ya que casi cada solicitud al servidor crea páginas nuevas o actualizadas. Y gran parte del almacenamiento en caché se realiza en el lado del cliente, por lo que tenemos un montón de solicitudes 304 cuando se trata de imágenes, javascript, css.

Además, tengo archivos de idioma escritos en archivos planos en el servidor donde la memoria caché en caché definitivamente es buena en lugar de leer desde el disco. Pero sólo hay unos pocos archivos como este.

En aproximadamente dos semanas pasé de tener un 98% de RAM libre a un 4% de RAM libre. Esto ocurrió durante un tiempo en el que también enviamos varias actualizaciones importantes de svn al servidor.

Mi pregunta es si mi servidor estará mejor optimizado si borro mi caché periódicamente (soy consciente de la opinión de Linus Torvalds sobre el caché) usando el siguiente comando:

sync; echo 3 > /proc/sys/vm/drop_caches

¿O sería mejor editar el siguiente archivo?

/proc/sys/vm/swappiness  

Si reemplazo el valor predeterminado de 60 por 30, debería realizar muchos menos intercambios y mucha más reutilización del caché obsoleto.

Se siente bien ver todo ese caché liberado usando el primer comando, pero te mentiría si te dijera que esto es bueno para el entorno de escritorio. Pero ¿qué pasa con un servidor web como el que describí anteriormente? ¿Pensamientos?

EDITAR: Soy consciente de que el sistema adquirirá memoria cuando la necesite de la memoria caché, pero gracias por señalarlo para mayor claridad. ¿Me estoy imaginando cosas cuando Apache se ralentiza cuando la mayor parte de la memoria del servidor está almacenada en caché? ¿Es ese un tema completamente diferente?

Respuesta1

Borrar cachés perjudicará el rendimiento, no ayudará. Si la RAM fuera necesaria para otra cosa, sería utilizada por otra cosa, por lo que todo lo que está haciendo es reducir la proporción de aciertos/errores de caché durante un tiempo después de haber realizado el borrado.

Si los datos en caché están muy desactualizados (es decir, son elementos almacenados en caché durante una operación inusual), se reemplazarán con datos "más nuevos" según sea necesario sin que usted los borre artificialmente.

La única razón para ejecutar sync; echo 3 > /proc/sys/vm/drop_cachesnormalmente es si va a intentar realizar algunas pruebas de rendimiento de E/S y desea comenzar desde un estado conocido (ejecutar la caída de caché entre ejecuciones para reducir las diferencias en los resultados debido a que el caché se prepara de manera diferente en cada ejecución). correr).

El kernel a veces intercambiará algunas páginas a pesar de que hay suficiente RAM que podría recuperar del caché/buffers, y ajustar la configuración de intercambio puede detener esto si considera que es un problema para su servidor. Es posible que veas un pequeño beneficio de esto, pero es probable que veas un rendimiento temporal.gotaborrando caché + búfer artificialmente.

información relacionada