Introduzione

Molte volte i sistemi Linux possono riscontrare problemi di memoria insufficiente dopo essere stati in esecuzione per diverso tempo. Il motivo è che Linux utilizza molta memoria per la cache del disco poiché la RAM viene sprecata se non viene utilizzata. La cache viene utilizzata per conservare i dati da utilizzare frequentemente dal sistema operativo. Lettura dei dati dalla cache è molto più veloce della lettura dei dati dal disco rigido.
È utile che il sistema operativo ottenga i dati dalla cache in memoria. Ma se i dati non sono stati trovati nella cache, vengono letti dal disco rigido. Quindi non è un problema svuotare la memoria cache.

Questo articolo spiega come svuotare la cache di memoria sul server Linux.

Se desideri svuotare la Cache su un server in remoto continua a leggere, altrimenti salta il primo paragrafo "Connessione al Server" e leggi il successivo.

Connessione al Server

Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:

ssh [email protected]_DEL_SERVER

Successivamente sarà necessario inserire la password dell'utente root.

Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:

ssh [email protected]_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password del vostro utente.

La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:

ssh [email protected]_DEL_SERVER -p PORTA

Svuota la Memory Buffer Cache

Sono disponibili tre opzioni per svuotare la cache della memoria Linux. Utilizzare uno dei seguenti secondo le vostre esigenze.

  • Per cancellare la memoria pagecache, dentries e inodes:
sync; echo 3 > /proc/sys/vm/drop_caches

Se non utilizzi l'utente root, ma un utente con privilegi sudo:

sudo sh -c 'echo 3 >/proc/sys/vm/drop_caches'
  • Per cancellare la memoria dentries e inodes:
sync; echo 2 > /proc/sys/vm/drop_caches

Se non utilizzi l'utente root, ma un utente con privilegi sudo:

sudo sh -c 'echo 2 >/proc/sys/vm/drop_caches'
  • Per cancellare solo la memoria pagecache:
sync; echo 1 > /proc/sys/vm/drop_caches

Se non utilizzi l'utente root, ma un utente con privilegi sudo:

sudo sh -c 'echo 1 >/proc/sys/vm/drop_caches'

Pianificare Cron per svuotare la cache regolarmente

È una buona idea pianificare un cron per eliminare e svuotare  la cache in automatico a intervalli regolari utilizzando crontab.

Usa il comando crontab -e per modificare cron sul tuo sistema:

crontab -e

Aggiungere la seguente riga:

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

Il cron sopra verrà eseguito ogni ora e svuota la cache di memoria sul sistema. Puoi configurare il cron per essere eseguito a qualsiasi orario ad intervalli di tempo personalizzati, per maggior informazioni leggere questo tutorial.

Trovare memorie cache utilizzate in Linux

Utilizzare il comando free per scoprire gli usi della memoria cache da parte del sistema Linux:

free -mh

Dovresti visualizzare un messaggio di output simile al seguente:

              total        used        free      shared  buff/cache   available
Mem:          1.9Gi       524Mi       146Mi        73Mi       1.2Gi       1.1Gi
Swap:            0B          0B          0B

L'opzione -mh è utile per leggere i risultati dell'output più facilmente. Con questa opzione è facile distinguere megabyte e gigabyte.

Conclusione

In qusto tutorial abbiamo visto come svuotare la Cache di Memoria e la Cache Buffer su Linux.