Eu estava testando como uma máquina Ubuntu 16.04 lida com condições de pouca memória e tinha vários trabalhos suspensos que consumiam quase toda a RAM do servidor. Eu ainda era capaz de executar comandos bash normais quando saí do trabalho ontem à noite. De manhã (sem ninguém fazer nada ao servidor), todos os comandos ( ps
, free
, ls
, etc.) apresentaram o seguinte erro:
-bash: fork: Cannot allocate memory
Eu consegui executar jobs
e kill %1
para recuperar a máquina. Foi uma sorte ter mantido uma sessão SSH aberta, porque outras conexões SSH falharam (o cliente simplesmente não exibiu um prompt de comando após a autenticação).
O fato de que os programas usuais da userland podem efetivamente derrubar todo o servidor até o ponto em que, se não houvesse uma sessão SSH existente, ele teria que ser reiniciado, é altamente ! Meu entendimento era que o Linux (ou qualquer SO, na verdade) deveria matar processos para liberar memória RAM antes que todo o sistema chegasse a um estado inutilizável. Como eu faço isso?
Tags memory-usage memory linux ubuntu oom