Olhe para o Linux Out of Memory Killer. Não entra automaticamente no seu servidor? Tem no meu.
Eu tenho executado um processo (gdb) que pode facilmente usar todos os meus ram e trocar espaço. Toda vez que isso acontece, todo o sistema se torna pouco responsivo e o Xorg mal atualiza, eu não consigo mudar para outro tty Eu não consigo digitar comandos no console, etc.
Eu tentei deixar de lado a memória com:
sudo sysctl -w vm.min_free_kbytes=407580
sudo sysctl -w vm.swappiness=5
Parte da memória virtual foi poupada, mas o espaço de troca foi usado e o sistema ainda ficou sem resposta.
Alguém tem alguma maneira infalível de evitar que o sistema congele completamente? Para que eu possa matar os problemas de memória?
Eu encontrei uma maneira de limitar o uso de memória por processo iniciado a partir de um determinado shell com:
ulimit -v 2037900
Isso limita cada processo para 2037900 KiB (que é minha memória total) de memória virtual. Qual é mais do que qualquer processo deve usar. Até agora, isso parece impedir que o sistema diminua a velocidade e congele.
Eu ainda gostaria de saber se alguém conhece alguma boa prática de gerenciamento de recursos do sistema.
Olhe para o Linux Out of Memory Killer. Não entra automaticamente no seu servidor? Tem no meu.
Tags freeze memory out-of-memory