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ć?

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


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



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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.