Jak znaleźć proces o najwyższym obciążeniu?

10

Mam jednordzeniowy VPS ze średnią obciążeniem przekraczającą czasami 25. Kiedy to osiągnie, staje się nieznośnie powolny, a nawet uruchamiane są polecenia dash, które są szybsze i zużywają mniej pamięci RAM niż bashpotrzeba, aby je uruchomić. Jak mogę wyśledzić, który proces powoduje wysokie obciążenie?

NerdOfLinux
źródło
2
sudo apt install htopudostępnia przydatne narzędzie tekstowe do tego celu (bardziej przyjazne dla użytkownika niż standardowe top). Ale topdobrze, jeśli chcesz mieć niewielki ślad.
sudodus
2
Długość kolejki ładowania wskazuje, ile procesów jest gotowych do użycia procesora. To niekoniecznie musi być pojedynczy proces powodujący problem.
Thorbjørn Ravn Andersen

Odpowiedzi:

16

Możesz zainstalować htop. Dobrą rzeczą htopjest to, że pokaże twoje użycie na procesor, a także znaczący tekstowy wykres twojej pamięci i zamiany użycia u góry.

Aby zainstalować htop:

sudo apt-get install htop

Zacznij to:

htop

wprowadź opis zdjęcia tutaj

Naciśnij, F6aby posortować procesy, a następnie za pomocą klawisza nawigacyjnego możesz wybrać PERCENT_CPUi nacisnąć Enter.

wprowadź opis zdjęcia tutaj

Lub możesz użyć topw ten sposób ( źródło ):

top -b -n 1 | head -n 12
neferpitou
źródło
2
Jako skrót możesz użyć Pdo sortowania według użycia procesora, Mpamięci lub Tczasu oraz tpowrotu do układu drzewa.
deltab
Co ciekawe, htopma podstawową obsługę myszy. Jeśli klikniesz kolumny, pozwoli ci to również posortować według nich (jeśli się nie mylę). Istnieją inne operacje, które działają z myszą.
Ismael Miguel
11

Poniższe informacje zostały po prostu skradzione z Unix.SE: Znajdź proces, który zajmuje maksymalne użycie procesora, jeśli użycie procesora jest większe niż 60%? , choć oczywiście dostosowane do tego pytania.

wyświetla listę procesów według określonego użycia procesora

ps ahux --sort=-c | awk '{if($3>0.0)printf"%s %6d %s\n",$3,$2,$11}'

Daje to listę procesów, które mają >0.0% wykorzystania procesora , możesz zmienić tę wartość zgodnie z własnymi potrzebami, np >50.0. Każda linia zawiera procent wykorzystania procesora, PID i plik procesu.

wyświetla procesy z największym wykorzystaniem procesora

ps ahux --sort=-c | awk 'NR<=5{printf"%s %6d %s\n",$3,$2,$11}'

Pokazuje 5 najlepszych NR<=5procesów aktualnie powodujących największe obciążenie procesora.

deser
źródło
1

Wczoraj studiowałem awki bawiłem się dwiema pozostałymi odpowiedziami. Oto wynik:

  • Uzyskaj tylko proces o najwyższym zużyciu procesora, używając ps aux:

    ps auxh | awk -v max=0 '{if($3>max){CPU=$3; PID=$2; NAME=$11; max=$3}} END{printf "%5s %6d %s\n",CPU,PID,NAME}'
    
  • Uzyskaj trzy procesy o największym wykorzystaniu procesora, używając top:

    top -b -n 1 | awk 'NR>7 && NR<11 {printf "top: %5s %6d %s %s\n",$9,$1,$12,$13}'
    
  • Uzyskaj trzy procesy o największym wykorzystaniu procesora, używając ps aux:

    ps auxh --sort=-c | awk 'NR<=3 {printf "ps:  %5s %6d %s\n",$3,$2,$11}'
    

Próbowałem uruchomić dwa ostatnie polecenia jednocześnie (za pomocą <command>; wait; <command>i <command> & <command> &), ale potem zdałem sobie sprawę, że to w ogóle niemożliwe :)


Bibliografia:

pa4080
źródło
Ostatni nie pokazuje procesu z największym zużyciem procesora, ale zaczyna się od drugiego, prawdopodobnie miałeś na myśli, NR>=2że tam - okazuje się, psże opcja hpomija wiersz nagłówka, zobacz moją zaktualizowaną odpowiedź.
deser
@ deser, masz rację, wcześniej tak było NR>=2, ale NR>1jest krótkie :) Zaktualizowałem odpowiedź.
pa4080,
1

Użyj toppolecenia

top- wyświetla procesy Linux

Najlepszy program zapewnia dynamiczny widok działającego systemu w czasie rzeczywistym. Może wyświetlać informacje podsumowujące system, a także listę procesów lub wątków aktualnie zarządzanych przez jądro Linuksa. Typy wyświetlanych informacji podsumowujących system oraz typy, kolejność i rozmiar informacji wyświetlanych dla procesów są konfigurowalne przez użytkownika, a konfigurację tę można utrwalić po ponownym uruchomieniu.

źródło

dobry samouczek youtube

Eric Korolev
źródło