- Guide e supporto | Shellrent - https://guide.shellrent.com -

Il mio server Cloud esaurisce la memoria RAM disponibile

Tempo di lettura: 2 minuti
Aggiornata 9 mesi fa

L’esaurimento delle risorse assegnate nei Server Cloud accade spesso e non è così facile da verificare come sembra. Com’è possibile capire quali sono i primi “sintomi” di un server che sta esaurendo le risorse e com’è possibile porvi rimedio?

Come primo passo per diagnosticare se un server ha sufficiente memoria RAM a disposizione è fondamentale monitorarne l’utilizzo, attraverso il comando “free” tramite SSH è possibile ottenere uno stato dell’arte dell’utilizzo della memoria nel vostro server:

root@shellrent:~# free -m
 total used free shared buffers cached
Mem: 32066 31559 507 1701 273 29658
-/+ buffers/cache: 1627 30439
Swap: 6140 3 6137
root@shellrent:~#

La memoria totale disponibile viene riportata in Megabyte tramite la flag -m indicata sulla riga di comando ed è contrassegnata dal valore evidenziato in colore rosso.

Le memoria libera invece è contrassegnata dal valore evidenziato in colore blu, mentre quella attualmente utilizzata in verde.

In questo caso il server in questione ha un totale di 32GB di RAM assegnati e ne sta utilizzando 2GB (infatti ne ha disponibili 30GB).

Quando un server termina la memoria disponibile il suo Kernel cerca di “uccidere” casualmente i processi che occupano RAM e di conseguenza può uccidere qualche processo vitale e bloccare la macchina (che però continua a rispondere ai ping della rete).

Solitamente vengono riportati alcuni messaggi all’interno del log di sistema (var/log/syslog) simili a questo:

Jun 4 07:41:59  kernel: [70667120.897649] Out of memory: Kill process 29957 (java) score 366 or sacrifice child
Jun 4 07:41:59  kernel: [70667120.897701] Killed process 29957 (java) total-vm:2532680kB, anon-rss:1416508kB, file-rss:0kB

E’ fondamentale capire quali processi saturano la memoria e possiamo fare ciò attraverso il comando “ps aux –sort -rss” che ci restituirà l’elenco di tutti i processi in esecuzione che stanno consumando più risorse

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
mysql 10619 1.4 0.3 1256576 120816 ? Sl 12:14 0:01 /usr/sbin/mysqld --basedir=/usr --
root 269 0.0 0.2 118816 70484 ? Ss 2016 14:42 /lib/systemd/systemd-journald
bind 864 0.0 0.1 702208 39316 ? Ssl 2016 42:23 /usr/sbin/named -f -u bind
root 10140 0.0 0.0 343924 20348 ? Ss 12:14 0:00 /usr/sbin/apache2 -k restart

Se il server funzionava correttamente e non vi sono processi “strani” che vanno a saturare le risorse ma ciò accade per semplice carico di visitatori sulla macchina o per elaborazioni “troppo complesse” l’unica soluzione è aumentare la RAM disponibile sul server tramite un Upgrade dello stesso. Per effettuare un upgrade di risorse al tuo server cloud [1] vai alla guida corrispondente.