Tutoriel Linux

Htop pod Linuksem: odczyt obciążenia serwera bez paniki z powodu kolorów

Débutant6 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

Gdy serwer zwalnia, góra Szybko sprawia wrażenie, że wszystko wyjaśnia. Paski procesora, pamięć, kolory, lista procesów poruszających się we wszystkich kierunkach… a czasem dość niebezpieczna pokusa: zabicia pierwszego procesu, który wydaje się zużywać zbyt dużo zasobów.

Polecam lekturę htop jako punkt wyjścia. Pomaga on zidentyfikować potencjalne problemy, ale nie jest wiarygodnym źródłem wniosków. W tym artykule przyjrzymy się, co należy sprawdzić w pierwszej kolejności: użycie procesora, użycie pamięci, średnie obciążenie, sortowanie procesów i, co najważniejsze, jakie kontrole należy wykonać przed wyłączeniem usługi produkcyjnej.

Tux analizuje obciążenie serwera Linux za pomocą abstrakcyjnej tabeli monitorującej
Htop pomaga w znalezieniu potencjalnego klienta, ale przed zatrzymaniem procesu należy sprawdzić logi i usługi.

Zainstaluj i uruchom htop w systemie Linux

W wielu dystrybucjach htop nie jest instalowany domyślnie. W Debianie lub Ubuntu można go dodać za pomocą APT:

sudo apt update
sudo apt install htop

W Fedorze:

sudo dnf install htop

W Arch Linuxie:

sudo pacman -S htop

Następnie wystarczy uruchomić:

góra

Jeśli łączysz się ze zdalnym serwerem przez SSH, otwórz htop w czystej sesji. Unikaj wykonywania destrukcyjnych działań z niestabilnej sesji lub z terminala, który możesz przypadkowo zamknąć.

Odczytuj paski procesora bez paniki

U góry ekranu htop wyświetla pasek dla każdego rdzenia lub wątku procesora. Jest to przydatne do sprawdzenia, czy obciążenie jest rozłożone, czy też pojedynczy rdzeń pracuje z pełną wydajnością.

Krótki skok obciążenia procesora niekoniecznie stanowi problem. Kopie zapasowe, kompilacje, skany antywirusowe czy kompresje mogą mieć skoki na kilka sekund. Najbardziej interesuje mnie czas trwania skoku i związany z nim proces.

Zanim cokolwiek dotkniesz, sprawdź także liczbę dostępnych procesorów logicznych:

Nproc

Średnie obciążenie na poziomie 4 na maszynie z 8 wątkami nie ma takiego samego znaczenia jak na małym serwerze VPS z 1 vCPU. To proste rozróżnienie, ale pozwala uniknąć wielu błędnych decyzji.

czas pracy

Zamówienie czas pracy Wyświetla trzy średnie wartości obciążenia w ciągu 1, 5 i 15 minut. Jeśli wszystkie trzy rosną od jakiegoś czasu, sygnał jest silniejszy niż prosty skok widoczny w htop.

Jeśli chcesz zagłębić się w ten temat, przeczytaj artykuł na temat średnie obciążenie pod Linuksem Ta lektura dobrze ją uzupełnia.

Wykorzystanie pamięci: nie myl pamięci podręcznej z nasyceniem

Wykorzystanie pamięci często stanowi problem. W systemie Linux znaczna część pamięci RAM może być wykorzystywana jako bufor dyskowy. Nie jest to koniecznie wadą. Jądro zwalnia ten bufor, gdy aplikacje go potrzebują.

Aby sprawdzić poza htopem, uruchom:

wolne - godz

Spójrz szczególnie na kolumnę dostępnyJeśli pozostanie wygodny, pamięć może nie być Twoim głównym problemem, nawet jeśli pasek napędowy wydaje się bardzo pełny.

Jeśli jednak dostępna pamięć spada, przestrzeń wymiany się zwiększa, a serwer staje się wolniejszy, należy zidentyfikować proces rozrostu. W htop możesz sortować według pamięci za pomocą F6następnie wybierz kolumnę MEM%.

ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | głowa

To polecenie umożliwia szybki odczyt poza interaktywnym interfejsem. Może być przydatne podczas rozwiązywania problemów, jeśli htop nie jest zainstalowany lub chcesz skopiować dane wyjściowe do zgłoszenia.

Przeszukiwanie procesów w celu znalezienia prawdziwego winowajcy

W htop dolna lista wyświetla procesy. Najbardziej przydatne kolumny to: PID, UŻYTKOWNIK, Procesor%, MEM%, CZAS+ I Rozkaz.

Kilka rzeczy, które warto wiedzieć:

  • F6 aby wybrać kolumnę sortowania;
  • F4 aby filtrować listę;
  • F5 aby wyświetlić drzewo procesów;
  • F9 wysłać sygnał do procesu;
  • Q aby czysto wyjść z htop.

Widok drzewa jest bardzo przydatny. Pozwala sprawdzić, czy proces intensywnie wykorzystujący zasoby jest uruchamiany przez usługę, skrypt, użytkownika SSH czy obiekt podrzędny serwera WWW.

Jeśli zauważysz, że proces Java, PHP, Python lub Node zużywa dużo zasobów, nie wyłączaj go losowo. Najpierw sprawdź, do której usługi należy:

systemctl status nginx --no-pager
systemctl status php8.4-fpm --no-pager
systemctl status mariadb --no-pager

Oczywiście dostosuj nazwy usług do swojego serwera. Jeśli nie wiesz, które usługi są uruchomione, zapoznaj się z artykułem na temat Polecenia systemctl do wyświetlania listy usług Linux jest bardziej odpowiednie zanim pójdziesz dalej.

Przed zakończeniem procesu sprawdź logi.

Najbardziej kuszącym przyciskiem w htop jest F9Służy do wysyłania sygnału do procesu. Technicznie rzecz biorąc, można wyłączyć PID z poziomu htop. W praktyce często jest to ostatnia czynność, a nie pierwsza.

Przed wyłączeniem usługi sprawdź jej ostatnie logi:

sudo journalctl -u nginx -n 80 --no-pager

Jeżeli usługa zapisuje do dedykowanego pliku, obserwuj ją przez kilka sekund:

sudo tail -f /var/log/nginx/error.log

W tej sekcji możesz również przeczytać ponownie artykuł o monitorowaniu ogona i dziennika na żywoZapobiega utknięciu przed htopem bez kontekstu.

Jeżeli proces należy do usługi systemd, lepszym rozwiązaniem będzie ponowne uruchomienie:

sudo systemctl restart nginx
sudo systemctl status nginx --no-pager

Jeśli naprawdę musisz wysłać sygnał do PID, zacznij od TERMIN. Trzymać ZABIĆ w przypadku, gdy proces całkowicie przestaje reagować.

sudo kill -TERM 1234
sudo kill -KILL 1234

Zastępować tysiąc dwieście trzydzieści cztery na podstawie rzeczywistego PID. A jeśli korzystasz z bazy danych, pamięci masowej, serwera produkcyjnego lub aktywnej sesji klienta, odczekaj dodatkowe trzydzieści sekund, zanim cokolwiek zrobisz. Często w ten sposób unikniesz prawdziwej awarii.

Kiedy htop nie wystarcza

Htop bardzo dobrze pokazuje procesy, ale nie przedstawia pełnego obrazu. Wysokie obciążenie może pochodzić z procesora, pamięci, wejścia/wyjścia dysku, sieci, zablokowanej usługi lub normalnego skoku obciążenia aplikacji.

Aby cofnąć się o krok:

vmstat 1 5
systemctl --failed
journalctl -p ostrzeżenie..alert -b --no-pager

vmstat zapewnia szybki podgląd czasu oczekiwania procesora, pamięci, wymiany i operacji wejścia/wyjścia. systemctl --failed wymienia uszkodzone jednostki. dziennikctl umożliwia identyfikację ostrzeżeń z bieżącego uruchomienia.

Jeśli problem dotyczy portów sieciowych lub usługi, która nie nasłuchuje, sprawdź również, co jest faktycznie otwarte ss lub netstat w systemie Linux.

Moja szybka metoda radzenia sobie z wolnym serwerem

Kiedy otwieram htop na wolnym serwerze, zachowuję następującą sekwencję:

  • spójrz na średnie obciążenie czas pracy i porównaj ją z liczbą wątków procesora;
  • sprawdź dostępną pamięć za pomocą wolne - godz ;
  • sortuj htop według procesora, a następnie według pamięci;
  • zidentyfikować dział lub użytkownika stojącego za procesem;
  • przeczytaj logi przed ponownym uruchomieniem lub wyłączeniem czegokolwiek;
  • Jeśli proces zależy od usługi, wykonaj czysty restart za pomocą systemctl.

Htop doskonale sprawdza się w śledzeniu bieżącej sytuacji. Jednak właściwa decyzja rzadko wynika z analizy pojedynczego koloru lub kolumny. Weź PID, usługę, logi i dopiero wtedy wybierz akcję.

Aby uzyskać dokumentację referencyjną, zapoznaj się z oficjalną stroną internetową góra, jej Repozytorium GitHubi strona podręcznika szczyt aby poznać koncepcje związane z obciążeniem i procesami.

sudo apt update && sudo apt upgrade