“bash: fork: Não é possível alocar memória” para qualquer comando - como evitar isso no nível do sistema operacional?

1

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?

    
por EM0 21.02.2018 / 10:10

0 respostas