Existe alguma maneira de obter um despejo básico ou poder depurar um processo que foi morto pelo oom-killer?
Ou até mesmo defina oom-killer para tentar matar um processo usando o ABRT?
Outra abordagem é desativar o comprometimento excessivo da memória.
Para restaurar alguma aparência de sanidade ao seu gerenciamento de memória:
- Desabilitar o OOM Killer (Coloque
vm.oom-kill = 0
em /etc/sysctl.conf)- Desativar overcommit memória (Coloque
vm.overcommit_memory = 2
em/etc/sysctl.conf
)Essas configurações farão o Linux se comportar da maneira tradicional (se um processo solicitar mais memória do que o disponível
Observe que este é um valor ternário:malloc()
, falhará e o processo que solicita a memória deve lidar com essa falha).
- 0 = "estimativa se tivermos RAM suficiente"
- 1 = "Sempre diga sim"
- 2 = "diga não se não tivermos memória"
Isso forçará o aplicativo a lidar com a falta de memória e, possivelmente, seus logs / coredump / etc. podem fornecer algo útil.
NOTA: Quando o sistema ficar sem memória, você não poderá gerar novos processos! Você pode estar bloqueado para fora do sistema.
que parece o máximo que você pode obter no kernel para exibir erros de falta de memória.
https://www.kernel.org/doc/Documentation/sysctl/vm.txt
fonte