Passa al contenuto principale

Esaurimento della RAM in un Cloud VPS

Questa guida ti aiuta a riconoscere e gestire le situazioni in cui il tuo Cloud VPS esaurisce la memoria RAM.

Il problema in poche parole

La RAM è la memoria di lavoro che il server usa per i processi in esecuzione. È limitata in base al piano scelto e può saturarsi con l’esecuzione di troppe attività in contemporanea.

Queste attività possono essere legittime (per esempio un picco di visite, visualizzazioni o download) oppure originate da un malware che esegue operazioni senza il tuo consenso. Entrambe le situazioni sono realistiche e frequenti, e capire in quale ti trovi è fondamentale. Trovi un richiamo a questo aspetto nella sezione finale.

Quando tutta la memoria disponibile è già occupata e un nuovo processo ne richiede altra, il server inizia a interrompere (“uccidere”) processi in corso per liberare spazio, scegliendoli in modo casuale. Questo può interrompere processi vitali e bloccare la macchina. Inoltre il server continua a rispondere al ping di rete, quindi dall’esterno non risulta “irraggiungibile”, rendendo l’individuazione del problema più difficile.

Come monitorare l’uso della RAM

Per verificare se il server ha sufficiente RAM e se la sta usando nel modo previsto, monitora costantemente il sistema. Di seguito trovi tre approcci complementari: usali insieme per avere un quadro completo, soprattutto durante picchi di attività o comportamenti anomali.

Quantificare la memoria in uso

Il comando SSH free ti mostra lo stato della memoria RAM del 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:~#

Nell’esempio, il comando restituisce i valori in megabyte (grazie all’opzione -m) della memoria totale, usata e libera. Il server dispone di 32 GB di RAM e, al netto di cache e buffer (riga -/+ buffers/cache), sta usando circa 2 GB, con i restanti ~30 GB disponibili.

Analizzare i log

In caso di esaurimento della RAM, il log di sistema (accessibile in /var/log/syslog) riporta messaggi simili a questi:

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

Individuare i processi critici

È fondamentale capire quali processi saturano la memoria. Puoi farlo con il comando SSH ps aux --sort -rss, che restituisce l’elenco dei processi che stanno consumando più RAM in quel momento.

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

Analizzando l’elenco capisci se si tratta di programmi e funzionalità legittime oppure dell’attività di un malware che ha infettato il server.

Come intervenire

Se il server esaurisce le risorse disponibili per il carico di visitatori o per la complessità delle elaborazioni, l’unica soluzione è effettuare un upgrade a un piano Cloud VPS superiore. Vedi la guida upgrade di risorse al tuo server cloud per maggiori informazioni.

Se invece l’analisi evidenzia processi sospetti che non riconosci come parte della tua piattaforma, approfondisci con una scansione del server oppure contatta l’assistenza clienti tramite ticket.