Czy jest jakiś sposób, aby uzyskać zrzut główny lub mieć możliwość debugowania procesu, który został zabity przez Oom-Killera?
A może nawet ustawić program Oom-Killer na próbę zabicia procesu za pomocą ABRT?
Innym podejściem jest wyłączenie nadmiernego zaangażowania pamięci.
Aby przywrócić odrobinę zdrowia psychicznego do zarządzania pamięcią:
- Wyłącz OOM Killer (
vm.oom-kill = 0
wstaw w /etc/sysctl.conf)- Wyłącz overcommitu pamięci (Put
vm.overcommit_memory = 2
w/etc/sysctl.conf
)Te ustawienia sprawią, że Linux będzie się zachowywał w tradycyjny sposób (jeśli proces zażąda więcej pamięci niż jest dostępna
Zauważ, że jest to wartość potrójna:malloc()
, zakończy się niepowodzeniem, a proces żądający pamięci poradzi sobie z tym niepowodzeniem).
- 0 = „oszacuj, czy mamy wystarczającą ilość pamięci RAM”
- 1 = „Zawsze mów tak”
- 2 = „powiedz nie, jeśli nie mamy pamięci”
Wymusi to, że aplikacja sama poradzi sobie z brakiem pamięci, a być może jej dzienniki / coredump / itp. Mogą dać ci coś pożytecznego.
UWAGA: Kiedy w twoim systemie zabraknie pamięci, nie będziesz w stanie odrodzić nowych procesów! Możesz zostać zablokowany w systemie.
co wydaje się maksymalne, że jądro może wyświetlać błędy braku pamięci.
https://www.kernel.org/doc/Documentation/sysctl/vm.txt
źródło