Można to zrobić na kilka sposobów. Zauważ, że jest całkowicie możliwe wiele procesów w niekontrolowanym scenariuszu powodującym to, a nie tylko jeden.
Pierwszym sposobem jest skonfigurowanie programu pidstat do działania w tle i generowania danych.
pidstat -u 600 >/var/log/pidstats.log & disown $!
To da ci dość szczegółowy obraz działania systemu w dziesięciominutowych odstępach. Sugerowałbym, aby to był twój pierwszy port zawinięcia, ponieważ zapewnia najbardziej wartościowe / wiarygodne dane do pracy.
Występuje z tym problem, głównie jeśli pudełko przechodzi w niekontrolowaną pętlę procesora i generuje ogromne obciążenie - nie masz gwarancji, że Twój proces zostanie wykonany w odpowiednim czasie podczas ładowania (jeśli w ogóle), więc możesz faktycznie przegapić wynik !
Drugim sposobem na to jest włączenie rozliczania procesów. Prawdopodobnie bardziej długoterminowa opcja.
accton on
Umożliwi to rozliczanie procesów (jeśli jeszcze nie zostało dodane). Jeśli wcześniej nie działał, będzie to wymagało czasu.
Po uruchomieniu, powiedzmy 24 godziny, możesz następnie uruchomić takie polecenie (które da takie wyjście)
# sa --percentages --separate-times
108 100.00% 7.84re 100.00% 0.00u 100.00% 0.00s 100.00% 0avio 19803k
2 1.85% 0.00re 0.05% 0.00u 75.00% 0.00s 0.00% 0avio 29328k troff
2 1.85% 0.37re 4.73% 0.00u 25.00% 0.00s 44.44% 0avio 29632k man
7 6.48% 0.00re 0.01% 0.00u 0.00% 0.00s 44.44% 0avio 28400k ps
4 3.70% 0.00re 0.02% 0.00u 0.00% 0.00s 11.11% 0avio 9753k ***other*
26 24.07% 0.08re 1.01% 0.00u 0.00% 0.00s 0.00% 0avio 1130k sa
14 12.96% 0.00re 0.01% 0.00u 0.00% 0.00s 0.00% 0avio 28544k ksmtuned*
14 12.96% 0.00re 0.01% 0.00u 0.00% 0.00s 0.00% 0avio 28096k awk
14 12.96% 0.00re 0.01% 0.00u 0.00% 0.00s 0.00% 0avio 29623k man*
7 6.48% 7.00re 89.26% 0.00u 0.00% 0.00s
Kolumny są uporządkowane jako takie:
- Liczba połączeń
- Procent połączeń
- Ilość czasu rzeczywistego poświęconego na wszystkie procesy tego typu.
- Odsetek.
- Czas procesora użytkownika
- Odsetek
- Czas procesora systemu.
- Średnia liczba połączeń we / wy.
- Odsetek
- Nazwa polecenia
Będziesz szukał typów procesów, które generują najwięcej czasu procesora użytkownika / systemu.
To rozkłada dane jako całkowity czas pracy procesora (górny wiersz), a następnie sposób podziału tego czasu procesora. Rachunkowość procesów rozlicza się poprawnie tylko wtedy, gdy jest włączona, gdy procesy się odradzają, więc prawdopodobnie najlepiej zrestartować system po włączeniu, aby upewnić się, że wszystkie usługi są rozliczane.
To w żadnym wypadku nie daje konkretnego wyobrażenia o tym, jaki proces może być przyczyną tego problemu, ale może dać ci dobre samopoczucie. Ponieważ może to być 24-godzinna migawka, istnieje możliwość wypaczenia wyników, więc pamiętaj o tym. Powinien także zawsze się logować, ponieważ jest to funkcja jądra i w przeciwieństwie do pidstat zawsze będzie generował dane wyjściowe nawet podczas dużego obciążenia.
Ostatnia dostępna opcja wykorzystuje również rozliczanie procesów, dzięki czemu można ją włączyć jak wyżej, ale następnie użyć programu „lastcomm”, aby wygenerować statystyki procesów wykonywanych w czasie wystąpienia problemu wraz ze statystykami procesora dla każdego procesu.
lastcomm | grep "May 8 22:[01234]"
kworker/1:0 F root __ 0.00 secs Tue May 8 22:20
sleep root __ 0.00 secs Tue May 8 22:49
sa root pts/0 0.00 secs Tue May 8 22:49
sa root pts/0 0.00 secs Tue May 8 22:49
sa X root pts/0 0.00 secs Tue May 8 22:49
ksmtuned F root __ 0.00 secs Tue May 8 22:49
awk root __ 0.00 secs Tue May 8 22:49
To może dać ci kilka wskazówek, co może być przyczyną problemu.
Atop jest szczególnie przydatnym demonem do przeglądania szczegółowych informacji o poziomie procesu i domyślnie archiwizuje te dane przez 28 dni. Oprócz prezentacji niesamowitego interfejsu monitorowania w czasie rzeczywistym, możesz określić te pliki dziennika, które mają być otwierane i krok po kroku.
Artykuł daje pewne wyobrażenie o możliwościach, a znajdziesz więcej w podręcznika .
To naprawdę wspaniałe oprogramowanie.
źródło
Programy takie jak psmon i Monit może pomocne dla Ciebie. Mogą one monitorować procesy uruchomione w systemie, a jeśli którykolwiek próg (użycie procesora, zużycie pamięci ...) zostanie przekroczony, możesz ustawić, aby wysyłali Ci raport e-mail o tym, co się dzieje.
Możliwe jest również automatyczne ponowne uruchomienie nieprawidłowo działających procesów.
źródło
Jednym z rozwiązań jest pisanie skryptu, który jest uruchamiany za pomocą jednominutowego crona lub w pętli uśpienia i wysyła ci e-mail / zadanie scp / zrzut do wolumenu ebs ... z odpowiednimi danymi wyjściowymi (prawdopodobnie dmesg, pstree -pa i ps aux, prawdopodobnie vmstat) w momencie, gdy znajdzie średnią obciążenia powyżej pewnego limitu ...
źródło