Diagnozowanie wysokiego obciążenia na VPS | INTROSERV
EUR
european

EUR

usa

USD

Poland Pl
Ex. VAT Ex. VAT 0%

Diagnozowanie wysokiego obciążenia na VPS

Używanie htop, top i iotop-c do znalezienia winnego procesu

Kiedy Twój VPS zaczyna się zacinać – SSH działa z opóźnieniem, strony internetowe reagują wolno, a nawet pisanie w terminalu wydaje się powolne – zazwyczaj oznacza to, że jeden lub więcej zasobów systemowych (CPU, RAM lub dysk I/O) jest wykorzystywanych do granic możliwości. Ten przewodnik przeprowadzi Cię przez praktyczny, krok po kroku proces identyfikacji, co się dzieje i który proces jest winny, używając trzech standardowych narzędzi Linux: htop, top i iotop-c.

Info

Zakłada się, że odbiorcą są początkujący do średniozaawansowanych administratorzy systemów, którzy znają linię poleceń i podstawowe pojęcia Linux.

Krok pierwszy: Zrozum, co naprawdę oznacza "wysokie obciążenie"

Wiele osób widzi wysoką "średnią obciążenia" i wpada w panikę – ale nie wszystkie wysokie obciążenia są złe. Wyjaśnijmy to.

Co to jest "średnia obciążenia"?

"Średnia obciążenia" mówi Ci, ile procesów czeka na CPU w danym momencie. Jest wyświetlana jako trzy liczby (dla ostatnich 1, 5 i 15 minut).

Przykład: uptime

Wynik:

17:41:25 up 2 days, 3:45, 1 user, load average: 2.34, 1.89, 1.42

Interpretacja:

  • 2.34 – średnie obciążenie w ostatniej minucie
  • 1.89 – w ostatnich 5 minutach
  • 1.42 – w ostatnich 15 minutach

Teraz porównaj te liczby z liczbą rdzeni CPU. Jeśli masz 2 rdzenie:

  • Obciążenie około 2.0 oznacza, że oba CPU są w pełni wykorzystywane – system jest zajęty, ale w porządku.
  • Obciążenie znacznie wyższe niż 2.0 (jak 3 lub 4) oznacza, że jest kolejka – zbyt wiele procesów czeka.

Sprawdź, ile masz rdzeni:

nproc

Jeśli obciążenie ≫ liczba rdzeni przez długi czas, czas na dochodzenie.

Krok drugi: Uzyskaj szybki przegląd za pomocą htop

htop to najłatwiejszy sposób na wizualizację, co dzieje się wewnątrz Twojego VPS w czasie rzeczywistym.

Zainstaluj htop

Użyj polecenia odpowiedniego dla Twojej dystrybucji Linux, aby zainstalować:

  • sudo apt install htop dla Ubuntu/Debian
  • sudo yum install htop dla CentOS/RHEL

Uruchom

Uruchom polecenie htop. Zobaczysz kolorowy interfejs jak ten:

interfejs htop pokazujący paski CPU, pamięci i listę procesów

Zrozumienie układu

  • Górne paski pokazują użycie CPU, pamięci i swapu w czasie rzeczywistym.
  • Średnia obciążenia jest widoczna w prawym górnym rogu.
  • Lista procesów pokazuje, co jest uruchomione i ile CPU i RAM zużywa każdy proces.

Wskazówki nawigacyjne

  • Sortuj według użycia CPU: naciśnij F6, a następnie wybierz "PERCENT_CPU"
  • Sortuj według pamięci: naciśnij F6, wybierz "PERCENT_MEM"
  • Widok drzewa (pokaż procesy rodzic/dziecko): naciśnij F5
  • Zabij proces: zaznacz go – naciśnij F9 – wybierz sygnał (domyślnie 15, "terminate")
  • Szukaj procesu: naciśnij F3, wpisz część jego nazwy (np. "nginx")

Na co zwrócić uwagę

  • Procesy z wysokim CPU% – te zużywają najwięcej czasu CPU.
  • Procesy z wysokim MEM% – te zużywają RAM i mogą zmuszać system do swapowania.
  • Jeśli proces ciągle pojawia się na górze co kilka sekund, może to być skrypt w pętli lub restartująca się usługa.

Przykład

Uruchom htop. Jeśli zobaczysz coś takiego:

htop pokazujący proces msty-local-studio na górze zużywający dużo CPU i pamięci

Jest jasne, że msty-local-studio z PID 6346 zużywa więcej CPU i pamięci niż wszystko inne. Teraz wiesz, na czym skupić kolejne kontrole.

Krok trzeci: Sprawdź za pomocą top

Podczas gdy htop jest przyjazny, top jest dostępny na każdym systemie Linux – nie wymaga instalacji. To dobry wybór, gdy masz tylko dostęp SSH do minimalnego środowiska.

Uruchom

Uruchom polecenie top. Zobaczysz interfejs jak ten:

interfejs polecenia top pokazujący podsumowanie systemu i listę procesów

Kluczowe punkty

  • Linia %Cpu(s) pokazuje, gdzie idzie czas CPU:
    • us – procesy użytkownika
    • sy – zadania systemowe/jądra
    • wa – oczekiwanie na I/O (dysk)
  • %wa (oczekiwanie na I/O) powyżej 10–15% często oznacza wąskie gardło dysku.
  • Średnia obciążenia i podsumowanie zadań mówią, jak zajęty jest system.

Przydatne skróty klawiszowe

  • Shift + P – sortuj według CPU
  • Shift + M – sortuj według pamięci
  • Shift + T – sortuj według czasu działania procesu
  • 1 – przełącz użycie CPU na rdzeń
  • k – zabij proces (wprowadź PID, gdy zostaniesz o to poproszony)
  • q – zakończ top

Kiedy używać top

Używaj top, gdy:

  • htop nie jest zainstalowany (jak w systemie ratunkowym lub kontenerze Docker).
  • Chcesz lekkiego narzędzia, które pokazuje równowagę CPU vs. I/O w czasie rzeczywistym.

Krok czwarty: Jeśli CPU i RAM wyglądają dobrze – sprawdź dysk I/O za pomocą iotop-c

Czasami wszystko wygląda normalnie – użycie CPU nie jest wysokie, pamięć jest w porządku – a jednak system wydaje się zamrożony. Polecenia takie jak ls lub cd zawieszają się na kilka sekund, a średnia obciążenia jest nadal wysoka. To klasyczny znak oczekiwania na I/O, gdzie CPU jest bezczynne, ale czeka na zakończenie operacji dyskowych.

Zainstaluj iotop-c

Użyj polecenia odpowiedniego dla Twojej dystrybucji Linux, aby zainstalować:

  • sudo apt install iotop-c dla Ubuntu/Debian
  • sudo yum install iotop-c dla CentOS/RHEL

Włącz monitorowanie IO za pomocą polecenia:

sudo sysctl kernel.task_delayacct=1

Uruchom

Uruchom polecenie jako użytkownik root: sudo iotop-c. Zobaczysz interfejs jak ten:

interfejs iotop-c pokazujący aktywność I/O dysku na proces

Interpretacja

  • Kolumna IO pokazuje, ile czasu każdy proces jest zablokowany, czekając na I/O.
  • Wysokie IO (np. 90–100%) – ten proces mocno czeka na dysk.
  • Sprawdź, czy uruchamiasz kopie zapasowe, duże importy danych lub zadania kompresji.

Typowe przyczyny przeciążenia I/O

  • Baza danych (mysqld, postgres) wykonująca duże zapytanie.
  • Skrypty kopii zapasowych (rsync, tar, dd) kopiujące ogromne pliki.
  • Pliki dziennika rosnące niekontrolowanie w /var/log.
  • Źle skonfigurowany swap – jeśli system zaczyna intensywnie swapować, obciąża dysk.

Krok piąty: Koreluj to, co znalazłeś

Teraz, gdy użyłeś htop, top i iotop-c, czas złożyć puzzle w całość.

Objaw Prawdopodobna przyczyna Narzędzie do sprawdzenia
Wysokie użycie CPU Błędny skrypt, ciężki proces htop, top
Wysokie użycie pamięci Wycieki pamięci, zbyt wiele pracowników htop
Wysokie oczekiwanie na I/O, wolna odpowiedź Wąskie gardło dysku, swapowanie iotop-c, top
Wysokie obciążenie, ale CPU bezczynne Wyczerpanie I/O lub pamięci top, iotop-c

Sprawdź także dzienniki systemowe pod kątem ostrzeżeń:

journalctl -xe

lub:

tail -n 50 /var/log/syslog

Możesz znaleźć wiadomości o błędach jądra, nieudanych montażach lub procesach zabitych przez OOM (Out Of Memory) killer.

Krok szósty: Podejmij działania

Gdy zidentyfikujesz winowajcę, zdecyduj, co zrobić dalej.

Zrestartuj lub zatrzymaj proces

sudo systemctl restart <service>

lub, jeśli to konieczne:

sudo kill -9 <pid>

Zwolnij miejsce na dysku

Jeśli użycie dysku jest wysokie, użyj df -h, aby określić, którą partycję wyczyścić, lub sudo du -sh /var/log/*, aby określić, które dzienniki wyczyścić.

Zmniejsz obciążenie procesów

  • Ogranicz zadania cron, aby nie uruchamiały się jednocześnie.
  • Dostosuj limity zapytań do bazy danych lub buforowanie.
  • Zmniejsz liczbę pracowników w Nginx, Apache lub Gunicorn.

Jeśli nic nie pomaga – zaktualizuj zasoby

Jeśli ciągle osiągasz limity nawet przy zoptymalizowanych obciążeniach, czas dodać więcej CPU, RAM lub przejść na szybsze przechowywanie (np. SSD na NVMe).

Krok siódmy: Zapobieganie i ciągłe monitorowanie

Nie powinieneś musieć ręcznie logować się i sprawdzać obciążenia za każdym razem. Możesz ustawić monitorowanie i alerty za pomocą narzędzi takich jak: glances, netdata, prometheus, itp.

Szybkie polecenia referencyjne

Cel Polecenie
Pokaż średnią obciążenia uptime
Zobacz obciążenie CPU/pamięci wizualnie htop
Minimalny widok procesów top
Monitoruj aktywność dysku iotop-c
Przeglądaj dzienniki journalctl -xe

Przykład z życia: Uciekający skrypt kopii zapasowej

Połączmy wszystko razem z rzeczywistym scenariuszem.

Sytuacja

  • VPS z 2 rdzeniami CPU i przechowywaniem SSD
  • Nagle staje się bardzo wolny – opóźnienie SSH, strony internetowe wygasają
  • uptime pokazuje: średnia obciążenia: 8.5, 7.3, 6.9 – zdecydowanie za wysokie dla 2 rdzeni.

Śledztwo

  1. Uruchom htop: użycie CPU jest niskie – tylko 10–15%. Użycie pamięci jest w porządku. Więc nie jest to związane z CPU.
  2. Uruchom top: %wa = 40% – system czeka na I/O dysku.
  3. Uruchom iotop-c:
    iotop-c pokazujący skrypt kopii zapasowej na górze z wysokim użyciem I/O

    Bingo – skrypt kopii zapasowej kompresujący ogromny katalog bezpośrednio na dysku.

Naprawa

  • Zatrzymaj lub przesuń kopię zapasową na noc.
  • Kompresuj do /tmp (w pamięci) przed przeniesieniem na dysk.
  • Użyj ionice, aby zmniejszyć jego priorytet dysku.

Wynik

Wydajność VPS wraca do normy natychmiast.

Ostateczne myśli

Diagnozowanie wysokiego obciążenia to nie magia – chodzi o systematyczne sprawdzanie CPU, pamięci i dysku jeden po drugim. Używaj swoich narzędzi jak detektyw:

  1. Czy CPU jest maksymalnie obciążone?htop, top
  2. Czy pamięć jest pełna lub swapuje?htop, top
  3. Czy dysk jest przeciążony?iotop-c
  4. Czy dzienniki to potwierdzają?journalctl

Gdy zidentyfikujesz winny proces, możesz zdecydować: dostroić go, zabić lub lepiej zaplanować. Z czasem zaczniesz rozpoznawać wzorce – proces o dużym obciążeniu, zbyt wiele zadań cron lub źle skonfigurowana aplikacja webowa. Wtedy przestaniesz gasić pożary i zaczniesz zarządzać jak prawdziwy administrator systemu.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA