Perché Ubuntu non sembra rilasciare memoria?


11

Sto lavorando con apache2 + php e altre app per server web.

Ho monitor come sessione di connessione a un server web. La memoria RAM è piena.

Ma quando si disconnette una sessione, non libera la memoria RAM.

Ho monitor via free -m, e mostra memoria inedita anche senza nessuna sessione ora connessa.

C'è una soluzione?


Stai attento con free -m. La prima riga mostra l'utilizzo della memoria inclusi i buffer e le cache. La seconda riga mostra la memoria utilizzata meno i buffer e la cache, che è l'effettiva memoria disponibile. Dovresti anche provare qualcosa di simile htopa scopo di monitoraggio. È molto più intuitivo e disponibile nei repository ufficiali. Se stai esaurendo la memoria, forniscici maggiori informazioni come il tipo di applicazione web che stai eseguendo, la quantità di RAM che hai, ciò che viene utilizzato e tutto il resto. Incolla l'output di free -m e cose del genere.
Johnride,

3
Non c'è soluzione, perché non c'è problema. Linux utilizza la RAM disponibile come buffer per i file.
Esegui CMD il

Ma qui dopo il comando di fuoco: sudo sync && sudo sysctl -w vm.drop_caches = 3 Mi mostra la giusta memoria disponibile gratuita e anche le app funzionano meglio.
Carro armato di Tejaskumar il


Sono molto esperto con il server VPS e ho recentemente fondato debian 9.0 perfettamente funzionante con la gestione della memoria.
Tejaskumar Tank,

Risposte:


12

Puoi liberare memoria inutilizzata usando questo comando:

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

Questo comando sincronizza i dati memorizzati nella cache e quindi scrive un parametro OS in fase di runtime, situato in / proc / sys / vm / drop_caches . Questo parametro viene letto dal kernel una volta, quindi libera la memoria non utilizzata.

Fondamentalmente, il kernel riserva tre sezioni nella cache, che potrebbero aumentare l'utilizzo della memoria:

  • pagecache
  • dentries
  • inode

La scrittura su questo parametro farà in modo che il kernel rilasci pagecache, dentries e inode puliti dalla RAM, liberando tale memoria. Esistono tre valori che possono essere assegnati:

  1. vm.drop_caches = 1 pagecache gratuite.
  2. vm.drop_caches = 2 dentices e inode gratuiti.
  3. vm.drop_caches = 3 pagecache, dentries e inode gratuiti.

Importante: dopo l'esecuzione, questo ritorna allo stato normale, il che significa che ricomincia a memorizzare nella cache pagecache, dentries e inode. Usalo a seconda della configurazione e dell'applicazione del server.


1
Puoi per favore spiegare qualche dettaglio in più?
AB

Questo comando è utile solo quando settimanalmente o giornalmente alla fine della giornata desidera rilasciare tutta la memoria non utilizzata, anche 3 o 2 o 1 ciascuno con scopi diversi. Non provarlo sul server caricato in sessione.
Tejaskumar Tank,

1
Modifica la tua risposta, non come commento.
AB

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

1
@GuillermoGarcia Uso di bash in Ubuntu 18.04.3. Ho dovuto includere sudouna seconda volta. Altrimenti ricevo l'erroresysctl: permission denied on key 'vm.drop_caches'
Nyxynyx il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.