Diagnosticiranje visoke obremenitve na VPS-u | INTROSERV
EUR
european

EUR

usa

USD

Slovenia Sl
Ex. VAT Ex. VAT 0%

Diagnosticiranje visoke obremenitve na VPS-u

Uporaba htop, top in iotop-c za iskanje krivega procesa

Ko vaš VPS začne zaostajati – SSH se zdi zakasnjen, spletne strani se odzivajo počasi ali celo tipkanje v terminalu se zdi počasno – to običajno pomeni, da so eden ali več sistemskih virov (CPU, RAM ali disk I/O) potisnjeni do svojih meja. Ta vodnik vas vodi skozi praktičen, korak za korakom proces, da ugotovite, kaj se dogaja in kateri proces je kriv, z uporabo treh standardnih Linux orodij: htop, top in iotop-c.

Info

Predpostavlja se, da je občinstvo začetni do srednje napredni sistemski administratorji, ki so seznanjeni z ukazno vrstico in osnovnimi koncepti Linuxa.

Prvi korak: Vedeti, kaj "visoka obremenitev" dejansko pomeni

Mnogi ljudje vidijo visoko "povprečno obremenitev" in paničarijo – vendar niso vse visoke obremenitve slabe. Počistimo to.

Kaj je "povprečna obremenitev"?

"Povprečna obremenitev" vam pove, koliko procesov čaka na CPU v določenem trenutku. Prikazana je kot tri številke (za zadnjih 1, 5 in 15 minut).

Primer: uptime

Izhod:

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

Interpretacija:

  • 2.34 – povprečna obremenitev v zadnji minuti
  • 1.89 – v zadnjih 5 minutah
  • 1.42 – v zadnjih 15 minutah

Zdaj primerjajte te številke s svojo številom CPU jeder. Če imate 2 jedra:

  • Obremenitev okoli 2.0 pomeni, da sta oba CPU-ja popolnoma uporabljena – sistem je zaposlen, vendar v redu.
  • Obremenitev veliko višja od 2.0 (kot 3 ali 4) pomeni, da je vrsta – preveč procesov čaka.

Preverite, koliko jeder imate:

nproc

Če je obremenitev ≫ število jeder za daljši čas, je čas za preiskavo.

Drugi korak: Hitro pregledovanje z htop

htop je najlažji način za vizualizacijo, kaj se dogaja znotraj vašega VPS v realnem času.

Namestite htop

Uporabite ukaz, primeren za vašo distribucijo Linuxa, da ga namestite:

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

Zaženite ga

Zaženite ukaz htop. Videli boste barvit vmesnik, kot je ta:

htop vmesnik, ki prikazuje CPU vrstice, pomnilniške vrstice in seznam procesov

Razumevanje postavitve

  • Zgornje vrstice prikazujejo uporabo CPU, pomnilnika in swap-a v realnem času.
  • Povprečna obremenitev je vidna v zgornjem desnem kotu.
  • Seznam procesov prikazuje, kaj se izvaja in koliko CPU in RAM-a uporablja vsak proces.

Nasveti za navigacijo

  • Razvrsti po uporabi CPU: pritisnite F6, nato izberite "PERCENT_CPU"
  • Razvrsti po pomnilniku: pritisnite F6, izberite "PERCENT_MEM"
  • Pogled drevesa (prikaži nadrejene/podrejene procese): pritisnite F5
  • Ubij proces: označite ga – pritisnite F9 – izberite signal (privzeto je 15, "terminate")
  • Iskanje procesa: pritisnite F3, vnesite del njegovega imena (npr. "nginx")

Kaj iskati

  • Procesi z visokim CPU% – ti porabljajo največ CPU časa.
  • Procesi z visokim MEM% – ti porabljajo RAM in lahko prisilijo sistem v swap.
  • Če se proces pojavlja na vrhu vsakih nekaj sekund, je morda zanka skripta ali ponovno zagon storitve.

Primer

Zaženite htop. Če vidite nekaj takega:

htop prikazuje proces msty-local-studio na vrhu, ki porablja veliko CPU in pomnilnika

Jasno je, da msty-local-studio s PID 6346 uporablja več CPU in pomnilnika kot vse ostalo. Zdaj veste, kje se osredotočiti na naslednje preglede.

Tretji korak: Preverite z top

Medtem ko je htop prijazen, je top na voljo na vsakem Linux sistemu – brez potrebe po namestitvi. Je dobra rezerva, ko imate samo SSH dostop do minimalnega okolja.

Zaženite ga

Zaženite ukaz top. Videli boste vmesnik, kot je ta:

vmesnik ukaza top, ki prikazuje povzetek sistema in seznam procesov

Ključne točke

  • %Cpu(s) vrstica prikazuje, kam gre CPU čas:
    • us – uporabniški procesi
    • sy – sistemske/jedrne naloge
    • wa – čakanje na I/O (disk)
  • %wa (I/O čakanje) nad 10–15% pogosto pomeni ozko grlo diska.
  • Povprečna obremenitev in povzetek nalog vam povesta, kako zaseden je sistem.

Uporabne bližnjice na tipkovnici

  • Shift + P – razvrsti po CPU
  • Shift + M – razvrsti po pomnilniku
  • Shift + T – razvrsti po času izvajanja procesa
  • 1 – preklopi na uporabo CPU po jedrih
  • k – ubij proces (vnesite PID, ko vas vpraša)
  • q – izhod iz top

Kdaj uporabiti top

Uporabite top ko:

  • htop ni nameščen (kot na reševalnem sistemu ali Docker kontejnerju).
  • Želite lahko orodje, ki prikazuje ravnovesje med CPU in I/O v realnem času.

Četrti korak: Če sta CPU in RAM v redu – Preverite disk I/O z iotop-c

Včasih vse izgleda normalno – uporaba CPU ni visoka, pomnilnik je v redu – vendar se sistem zdi zamrznjen. Ukazi kot ls ali cd visijo nekaj sekund, povprečna obremenitev pa je še vedno visoka. To je klasičen znak I/O čakanja, kjer je CPU neaktiven, vendar čaka na dokončanje diskovnih operacij.

Namestite iotop-c

Uporabite ukaz, primeren za vašo distribucijo Linuxa, da ga namestite:

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

Omogočite spremljanje IO z ukazom:

sudo sysctl kernel.task_delayacct=1

Zaženite ga

Zaženite ukaz kot root uporabnik: sudo iotop-c. Videli boste vmesnik, kot je ta:

vmesnik iotop-c, ki prikazuje diskovno I/O aktivnost po procesih

Interpretacija

  • IO stolpec prikazuje, koliko časa je vsak proces blokiran, ko čaka na I/O.
  • Visok IO (npr. 90–100%) – ta proces močno čaka na disk.
  • Preverite, ali izvajate varnostne kopije, velike uvoze podatkov ali stiskanje.

Pogosti vzroki za preobremenitev I/O

  • Baza podatkov (mysqld, postgres) izvaja veliko poizvedbo.
  • Skripte za varnostno kopiranje (rsync, tar, dd) kopirajo ogromne datoteke.
  • Dnevniške datoteke, ki nenadzorovano rastejo v /var/log.
  • Napačno konfiguriran swap – če sistem začne močno swapati, obremenjuje disk.

Peti korak: Povežite, kar ste našli

Zdaj, ko ste uporabili htop, top in iotop-c, je čas, da sestavite sestavljanko.

Simptom Verjetni vzrok Orodje za preverjanje
Visoka uporaba CPU Hroščasta skripta, težek proces htop, top
Visoka uporaba pomnilnika Puh pomnilnika, preveč delavcev htop
Visoko I/O čakanje, počasni odzivi Ozko grlo diska, swapanje iotop-c, top
Visoka obremenitev, vendar CPU neaktiven I/O ali izčrpanje pomnilnika top, iotop-c

Prav tako preverite sistemske dnevnike za opozorila:

journalctl -xe

ali:

tail -n 50 /var/log/syslog

Morda boste našli sporočila o napakah jedra, neuspelih priklopih ali procesih, ki jih je ubil OOM (Out Of Memory) killer.

Šesti korak: Ukrepajte

Ko identificirate krivca, se odločite, kaj storiti naprej.

Ponovno zaženite ali ustavite proces

sudo systemctl restart <storitev>

ali, če je potrebno:

sudo kill -9 <pid>

Osvobodite prostor na disku

Če je uporaba diska visoka, uporabite df -h za določitev, kateri particiji očistiti, ali sudo du -sh /var/log/* za določitev, katere dnevnike očistiti.

Zmanjšajte obremenitev procesov

  • Omejite cron naloge, da se ne izvajajo hkrati.
  • Prilagodite omejitve poizvedb v bazi podatkov ali predpomnjenje.
  • Zmanjšajte število delavcev v Nginx, Apache ali Gunicorn.

Če nič ne pomaga – nadgradite vire

Če nenehno dosegate meje tudi z optimiziranimi delovnimi obremenitvami, je čas, da dodate več CPU, RAM-a ali preklopite na hitrejše shranjevanje (npr. SSD na NVMe).

Sedmi korak: Preprečevanje in neprekinjeno spremljanje

Ne bi smeli ročno prijavljati in preverjati obremenitve vsakič. Lahko nastavite spremljanje in opozorila z orodji, kot so: glances, netdata, prometheus, itd.

Hitri referenčni ukazi

Cilj Ukaz
Pokaži povprečno obremenitev uptime
Vizualno prikaži obremenitev CPU/pomnilnika htop
Minimalni pogled procesov top
Spremljaj diskovno aktivnost iotop-c
Ogled dnevnikov journalctl -xe

Primer iz resničnega sveta: Pobegli skript za varnostno kopiranje

Povežimo vse skupaj s pravim scenarijem.

Situacija

  • VPS z 2 CPU jedroma in SSD shranjevanjem
  • Naenkrat se zdi zelo počasen – zakasnitev SSH, spletne strani potečejo
  • uptime prikazuje: povprečna obremenitev: 8.5, 7.3, 6.9 – preveč visoko za 2 jedra.

Preiskava

  1. Zaženite htop: Uporaba CPU je nizka – le 10–15%. Uporaba pomnilnika je v redu. Torej ni CPU vezano.
  2. Zaženite top: %wa = 40% – sistem čaka na disk I/O.
  3. Zaženite iotop-c:
    iotop-c prikazuje skript za varnostno kopiranje na vrhu z visoko I/O uporabo

    Bingo – skript za varnostno kopiranje, ki stiska ogromno mapo neposredno na disku.

Popravek

  • Ustavite ali prestavite varnostno kopiranje, da se izvaja ponoči.
  • Stisnite v /tmp (v pomnilniku) preden premaknete na disk.
  • Uporabite ionice za zmanjšanje njegove diskovne prioritete.

Rezultat

Delovanje VPS se takoj vrne v normalno stanje.

Končne misli

Diagnoza visoke obremenitve ni čarovnija – gre za sistematično preverjanje CPU, pomnilnika in diska enega za drugim. Uporabite svoja orodja kot detektiv:

  1. Ali je CPU maksimalno obremenjen?htop, top
  2. Ali je pomnilnik poln ali swap?htop, top
  3. Ali je disk preobremenjen?iotop-c
  4. Dnevniki to potrjujejo?journalctl

Ko identificirate krivi proces, se lahko odločite: prilagodite ga, ubijte ga ali ga bolje načrtujte. Sčasoma boste začeli prepoznavati vzorce – proces z visoko obremenitvijo, preveč cron nalog ali napačno konfigurirano spletno aplikacijo. Takrat prenehate z gašenjem požarov in začnete upravljati kot pravi sistemski administrator.

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