Mistério processo quebrando máquina usando toda a RAM - como identificar?

4

Eu tenho uma máquina Linux que executa ~ 10 processos internos.

A cada dois dias (!) a máquina fica completamente sem memória RAM, entra em troca e fica sem resposta. Isso acontece rapidamente ao longo de um par de segundos, por isso não é viável assistir à máquina até que ela morra. É um vazamento súbito, não gradual, então o topo (1) não dá indicações de que algo ruim pode acontecer.

Qual é a melhor maneira de identificar quais processos estão causando o problema?

    
por wd40 25.06.2011 / 14:10

2 respostas

3

Você pode olhar para a desativação overcommit memória de modo kernel seria apenas matar o processo de vazamento em vez da máquina.

Você pode desativar a supercomprometimento usando os dois sysctl a seguir:

vm.overcommit_ratio=60
vm.overcommit_memory=2

O primeiro número depende da quantidade de memória e da quantidade de troca que você tem. O limite de alocação será:

amount_of_swap + overcommit_ratio/100 * amount_of_ram
    
por 25.06.2011 / 15:57
1

Você pode definir limites de memória para cada processo com bash ulimit comando para impedi-los de comer toda a memória do sistema. Para receber notificações, eu recomendo usar monit para monitorar o uso de cada memória de processo.

    
por 25.06.2011 / 15:12