Co zabiło mój proces?

7

Mam problem z aplikacją, która ciągle ginie. To działa serwer RHEL5. Uruchomiliśmy strace przeciwko temu procesowi i na końcu pliku śledzenia dostaję grupę +++ zabitych przez wiadomości SIGKILL +++ . SIGKILL nie może zostać złapany, więc próbuję znaleźć sposób, aby wyśledzić, dlaczego proces ginie.

Próbowałem użyć niektórych rekomendacji Red Hat, takich jak

auditctl -a exit,always -S kill 

co nie działało. Nie widziałem żadnych wpisów dotyczących zabicia w pliku audit.log.

Innym zaleceniem Red Hat było użycie systemtap. Zainstalowałem go przez yum i próbowałem uruchomić stap z dostarczonym skryptem sigmon.stp. Plik sigmon.stp znajduje się na tej stronie: Sigmon.stp Użyłem polecenia podanego w sekcji komentarzy, a oto dane wyjściowe:

# stap sigmon.stp -x 12647 SIGKILL -v
Pass 1: parsed user script and 85 library script(s) using 146868virt/23716res/3024shr/21404data kb, in 110usr/10sys/116real ms.
semantic error: while resolving probe point: identifier 'kernel' at /usr/share/systemtap/tapset/signal.stp:60:37
        source: probe __signal.send.send_sigqueue = kernel.function("send_sigqueue")
                                                    ^
semantic error: missing x86_64 kernel/module debuginfo under '/lib/modules/2.6.18-308.13.1.el5/build'
semantic error: while resolving probe point: identifier '__signal' at :39:21
        source: probe signal.send = __signal.send.send_sigqueue,
                                    ^
semantic error: no match
semantic error: while resolving probe point: identifier 'signal' at sigmon.stp:30:7
        source: probe signal.send 
                      ^
Pass 2: analyzed script: 1 probe(s), 0 function(s), 0 embed(s), 0 global(s) using 150348virt/28920res/4696shr/24884data kb, in 30usr/40sys/81real ms.
Pass 2: analysis failed.  Try again with another '--vp 01' option.
Missing separate debuginfos, use: debuginfo-install kernel-2.6.18-308.13.1.el5.x86_64  

Czy ktoś miał szczęście, używając komendy stap? Czy jest inny sposób, aby dowiedzieć się, co zabija mój proces?

zjherner
źródło
Czy Twój proces zużywa dużo pamięci? Jądro zabije procesy zużywające zbyt dużo pamięci, jeśli zaczną wpływać na wydajność systemu.
terdon
1
„Co zabiło mój proces?” -> „zabity przez SIGKILLA”
Diogo
2
Ach, ale zamierzonym pytaniem jest prawdopodobnie „który program wysłał sigkill?”
Hennes
Jakieś wskazówki w logach systemowych?
podejrzany
Proces jest oparty na Javie, więc tak, zużywa sporo pamięci. Zwiększyliśmy pamięć i problem pozostaje. Czytałem o zabójcy oom, myślę, że jutro spróbuję wyłączyć zabójcę oom, aby sprawdzić, czy mogę to wykluczyć. Ale w dziennikach nie udało mi się znaleźć śladu zabójcy oomów. I tak, Hennes, szukam zawężenia, kto wysłał sigkill.
zjherner

Odpowiedzi:

2

SystemTap wygląda na to, że nie może znaleźć symboli debugowania dla twojego jądra. Czy zainstalowałeś wymagane pakiety debugowania jądra dla uruchomionego jądra? Przewodnik po SystemTap mówi:

Aby wdrożyć SystemTap, musisz zainstalować pakiety SystemTap wraz z odpowiednim zestawem pakietów -devel, -debuginfo i -debuginfo-common dla twojego jądra. Jeśli w systemie jest zainstalowanych wiele jąder i chcesz użyć SystemTap na więcej niż jednym jądrze, musisz zainstalować pakiety -devel i -debuginfo dla każdej z tych wersji jądra.

Adam Keck
źródło