¿Por qué ubuntu no parece liberar memoria?

11

Estoy trabajando con apache2 + php y otras aplicaciones de servidor web.

Tengo monitor como sesión conectando a un servidor web. La memoria RAM está llena.

Pero al desconectar una sesión, no libera la memoria RAM.

Tengo monitor vía free -m, y muestra memoria inédita incluso sin una sesión ahora conectada.

¿Hay alguna solución?

Tanque Tejaskumar
fuente
Tenga cuidado con free -m. La primera línea muestra el uso de la memoria, incluidos los búferes y las memorias caché. La segunda línea muestra la memoria utilizada menos las memorias intermedias y la memoria caché, que es la memoria disponible real. También debe intentar algo como htoppara fines de monitoreo. Es mucho más intuitivo y está disponible en los repositorios oficiales. Si realmente se está quedando sin memoria, bríndenos más información, como el tipo de aplicación web que está ejecutando, la cantidad de RAM que tiene, qué se usa y todo. Pegue la salida de free -m y cosas así.
Johnride
3
No hay solución, porque no hay problema. Linux usa la RAM disponible como búfer para los archivos.
Ejecute CMD el
Pero aquí después del comando de disparo: sudo sync && sudo sysctl -w vm.drop_caches = 3 Me muestra la memoria disponible libre y las aplicaciones funcionan mejor.
Tejaskumar Tank
Tengo mucha experiencia con el servidor VPS y recientemente fundé Debian 9.0, que funciona perfectamente con la administración de memoria.
Tejaskumar Tank

Respuestas:

12

Puede liberar memoria no utilizada con este comando:

sudo sync && sudo sysctl -w vm.drop_caches=3

Este comando sincroniza los datos en caché y luego escribe un parámetro del sistema operativo en tiempo de ejecución, ubicado en / proc / sys / vm / drop_caches . Este parámetro es leído por el núcleo una vez, luego libera la memoria no utilizada.

Básicamente, el núcleo reserva tres secciones en caché, que podrían aumentar el uso de memoria:

  • caché de página
  • dentries
  • inodes

Escribir en este parámetro hará que el kernel elimine las memorias caché de página, las dentries y los inodos de la RAM, lo que hará que la memoria se libere. Hay tres valores que se pueden asignar:

  1. vm.drop_caches = 1 cachés de página libres.
  2. vm.drop_caches = 2 dentries e inodos libres.
  3. vm.drop_caches = 3 cachés de página, dentries e inodes libres.

Importante: después de la ejecución, esto volverá al estado normal, lo que significa comenzar a almacenar en caché de páginas, dentries e inodes nuevamente. Úselo según la configuración y la aplicación de su servidor.

Guillermo García
fuente
1
¿Puedes por favor explicar un poco más de detalle?
AB
Este comando solo es útil cuando semanalmente o diariamente al final del día desean liberar toda la memoria no utilizada, también 3 o 2 o 1, cada una con un propósito diferente. No intente esto en el servidor cargado de sesión.
Tejaskumar Tank
1
Edite su respuesta, no como comentario.
AB
sudo sync & sudo sysctl -w vm.drop_caches=3
Nyxynyx
1
@GuillermoGarcia Usando bash en Ubuntu 18.04.3. Necesitaba incluir sudouna segunda vez. De lo contrario me sale el errorsysctl: permission denied on key 'vm.drop_caches'
Nyxynyx