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:
[email protected]:~# free -m total used free shared buffers cached Mem: 32066 31559 507 1701 273 29658 -/+ buffers/cache: 1627 30439 Swap: 6140 3 6137 [email protected]:~#
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 vai alla guida corrispondente.