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

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

Eu estava testando como uma máquina Ubuntu 16.04 lida com condições de pouca memória e teve vários trabalhos suspensos que consumiram quase toda a RAM do servidor. Ainda consegui executar comandos bash normais quando saí do trabalho ontem à noite. Pela manhã (sem ninguém fazer nada no servidor) todos os comandos ( ps, free, ls, etc.) deram o seguinte erro:

-bash: fork: Cannot allocate memory

Finalmente consegui correr jobse kill %1recuperar a máquina. Foi uma sorte manter uma sessão SSH aberta, porque outras conexões SSH falharam (o cliente simplesmente não mostrou um prompt de comando após a autenticação).

O fato de que programas regulares de usuário podem efetivamente derrubar todo o servidor ao ponto onde, se não houvesse uma sessão SSH existente, ele teria que ser reinicializado, éaltamenterelativo! Meu entendimento era que o Linux (ou qualquer sistema operacional, na verdade) deveria eliminar processos para liberar RAM antes que todo o sistema chegasse a um estado inutilizável. Como faço isso?

informação relacionada