È successo due volte nell’ultima settimana al server di questo sito ed è successo a molti Linux ospitati su macchine virtuali: improvvisamente sembra che un task occupi tutta la memoria disponibile, Linux va in out of memory e l’azione più rapida per ripristinare i servizi è un reboot.
Questa volta tutto è cominciato da qui:
Sep 15 17:16:26 mx kernel: httpd invoked oom-killer: gfp_mask=0x280da, order=0, oom_adj=0, oom_score_adj=0
Sep 15 17:16:26 mx kernel: httpd cpuset=/ mems_allowed=0
Sep 15 17:16:26 mx kernel: Pid: 25761, comm: httpd Not tainted 2.6.32-279.5.2.el6.centos.plus.x86_64 #1
oom (out of memory) killer entra in azione quando la memoria di sistema (fisica + swap) viene esaurita; il suo compito è quello di far fuori dei processi per liberare memoria e ristabilire la normalità.
Se entra inazione oom-killer vuol dire che bisogna fare qualcosa per evitare che la memoria si esaurisca.
Il problema risiede nell’approccio ottimista di allocazione della memoria di Linux, l’overcommit, un mix di overbooking delle compagnie aeree e di speranza che i processi non richiedano una quantità esagerata di memoria.
Ma il peggio può accadere. Sempre.