Como você evita que o sistema congele quando a memória é consumida?

5

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?

Atualização:

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.

    
por bobajeff 17.10.2015 / 01:50

1 resposta

1

Olhe para o Linux Out of Memory Killer. Não entra automaticamente no seu servidor? Tem no meu.

link

    
por 17.10.2015 / 20:03