Есть ли способ получить дамп ядра или отладить процесс, который был убит oom-killer?
Или даже установить oom-killer, чтобы попытаться убить процесс, используя вместо этого ABRT?
Другой подход - отключить чрезмерную загрузку памяти.
Чтобы восстановить некое подобие здравомыслия в управлении вашей памятью:
- Отключите OOM Killer (поместите
vm.oom-kill = 0
в /etc/sysctl.conf)- Отключить переполнение памяти (положить
vm.overcommit_memory = 2
в/etc/sysctl.conf
)Эти настройки приведут к тому, что Linux будет вести себя традиционным образом (если процесс запрашивает больше памяти, чем доступно,
Обратите внимание, что это троичное значение:malloc()
произойдет сбой, и ожидается, что процесс, запрашивающий память, справится с этой ошибкой).
- 0 = "оцените, если у нас достаточно оперативной памяти"
- 1 = "Всегда говори да"
- 2 = "скажи нет, если у нас нет памяти"
Это заставит приложение справляться с исчерпанием самой памяти, и, возможно, его журналы / coredump / и т. Д. Могут дать вам что-то полезное.
ПРИМЕЧАНИЕ. Когда в вашей системе заканчивается память, вы не сможете создавать новые процессы! Вы можете быть заблокированы из системы.
Кажется, что вы можете заставить ядро отображать ошибки из-за нехватки памяти.
https://www.kernel.org/doc/Documentation/sysctl/vm.txt
источник