Jak zdiagnozować przyczyny procesów zabijania zabójców

9

Mam mały wirtualny prywatny serwer z CentOS i www / mail / db, który ostatnio miał kilka incydentów, w których serwer WWW i ssh przestały odpowiadać.

Patrząc na dzienniki, zobaczyłem, że Oom-Killer zabił te procesy, prawdopodobnie z powodu braku pamięci i zamiany.

Czy ktoś może dać mi wskazówki, jak zdiagnozować, co mogło być przyczyną ostatniego incydentu? Czy to prawdopodobnie pierwszy proces został zabity? Gdzie jeszcze powinienem szukać?

dunxd
źródło

Odpowiedzi:

11

Nie, algorytm nie jest tak prosty. Możesz znaleźć więcej informacji w:

http://linux-mm.org/OOM_Killer

Jeśli chcesz śledzić zużycie pamięci, polecam uruchomienie polecenia takiego jak:

ps -e -o pid,user,cpu,size,rss,cmd --sort -size,-rss | head

Daje ci listę procesów, które zużywają najwięcej pamięci (i prawdopodobnie powodują sytuację OOM). Usuń, | headjeśli wolisz sprawdzić wszystkie procesy.

Jeśli umieścisz to na swoim cronie, powtarzaj to co 5 minut i zapisz w pliku. Zachowaj co najmniej kilka dni, abyś mógł sprawdzić, co się później stało.

W przypadku usług o znaczeniu krytycznym, takich jak ssh, zalecam użycie monitora do automatycznego restartowania ich w takiej sytuacji. Może zaoszczędzić na utracie dostępu do komputera, jeśli nie masz do niego zdalnej konsoli.

Powodzenia,
João Miguel Neves

jneves
źródło
Dzięki - w końcu załatwiłem to po kilku kolejnych przypadkach zabójstwa oomów, które rzuciły mój serwer na kolana. Musisz znaleźć przyczynę.
dunxd
6

Ostatnio miałem z tym trudności, ponieważ procesy, na które działa agresor, niekoniecznie muszą przebiegać źle. Próbując to zdiagnozować, dowiedziałem się o jednym z moich ulubionych narzędzi, na szczycie.

To narzędzie jest jak top na sterydach. W ustalonym przedziale czasu profiluje informacje o systemie. Następnie możesz go odtworzyć, aby zobaczyć, co się dzieje. Podkreśla procesy, które wynoszą 80% + na niebiesko i 90% + na czerwono. Najbardziej użytecznym widokiem jest tabela wykorzystania pamięci, która ilość pamięci została przydzielona w ostatnim okresie. To właśnie najbardziej mi pomogło.

Fantastyczne narzędzie - nie mogę powiedzieć wystarczająco dużo o tym.

na szczycie monitora wydajności

pboin
źródło
1

Ten artykuł na temat oswajania kilomówów wydaje się szczególnie przydatny. Wydaje się, że możesz ustawić priorytety, aby zapobiec zabijaniu oomów przez niektóre procesy (sshd byłoby dobrym początkiem dla VPS!)

dunxd
źródło
1

OOM zabija tylko proces, który w tym czasie ma najwięcej pamięci. Niekoniecznie proces, który przekroczył limit lub wzbogacił wywołanie te OOm.
Również Linux jest luźny z alokacją pamięci. AKA, jeśli twój proces potrzebuje 5 GB, ale używa tylko 3, Linux pozwoli innemu procesowi użyć 2, którego nie używa. wydajność> niezawodność. wtedy, gdy p1 potrzebuje pełnego 5, nie może go zdobyć

Nie jest to exeprt. po prostu sobie z tym radzę i co znalazłem

mwans
źródło