Server je spor: odakle početi
Petominutna dijagnostička procedura: CPU, memorija, disk, mreža — kako da sa nekoliko komandi utvrdiš šta tačno pravi usko grlo i šta dalje.
Ažurirano 23. avgust 2026.
„Sve je sporo” nije dijagnoza. Postoje samo četiri uska grla: CPU, memorija, disk i mreža. Ispod je redosled provera koji za pet minuta ukazuje na jedno od njih.
Korak 1: šira slika
uptime
free -h
df -h
Tri komande odmah isključuju pola opcija. Ako je prosečno opterećenje primetno veće od broja jezgara na tvom rangu, postoji red čekanja — vidi Prosečno opterećenje. available blizu nule znači memorija. Ako je particija 100% puna, ne traži dalje — pročitaj Nema mesta na disku.
Korak 2: šta je tačno usko grlo
vmstat 2 5
Gledaj kolone sa prosekom, sve osim prvog reda:
- visok
usisy, velikor— CPU je usko grlo; - visok
wa, velikob— disk je usko grlo; siisorazličiti od nule — dolazi do svopovanja, što znači da memorija ponestaje;- visok
st— vreme koje uzima hipervizor, to je spoljni uzrok, obrati se podršci.
Korak 3: pronađi krivca
ps aux --sort=-%cpu | head -10
ps aux --sort=-%mem | head -10
iotop -boPan 3 | head -20 # apt install iotop
ss -tn state established | wc -l
Uživo sliku je lakše čitati u htop ili btop. Pazi na procese u stanju D — oni čekaju na disk i podižu opterećenje.
Ako je krivac tvoja aplikacija, sledeće pitanje se odnosi na nju: spori upiti ka bazi, indeks koji nedostaje, previše radnika, beskonačna petlja posle deploya. Poveži trenutak kada je usporavanje počelo sa logom:
journalctl --since "1 hour ago" -p warning
Korak 4: proveri istoriju
Otvori „Overview” u panelu /hosting/vds/m/<id> i pogledaj grafike za poslednji dan i nedelju. Tri tipična obrasca:
- skok u određenom trenutku — nešto se promenilo: deploy, ažuriranje, novi cron posao;
- redovan pik po rasporedu — pozadinski zadatak; prebaci ga na noć ili ga ograniči sa
niceiionice; - ravan plato nedeljama — jednostavno si prerastao svoj rang.
Šta uraditi sa otkrićem
| Usko grlo | Brza akcija | Dugoročno rešenje |
|---|---|---|
| CPU | pronađi i zaustavi dodatni proces | rang sa više jezgara |
| Memorija | ograniči radnike i bafere baze, dodaj svop | rang sa više memorije |
| Disk | ograniči bekape sa ionice, smanji logove | viši rang: plato raste sa brojem jezgara |
| Mreža | ograniči pozadinska preuzimanja sa --bwlimit | istraži izvor saobraćaja |
Plato diska se računa ovako: 60 MB/s upisa po jezgru, ne niže od 60 i ne više od 400, a čitanja duplo više. Ako si stalno na platou, disk neće postati brži bez prelaska na viši rang — vidi Benchmark.
Česte greške
- Odmah restartuj mašinu. Restart briše sliku, a za sat sve će se ponoviti. Prvo prikupi brojke.
- Veruj jednom snimku. Skok u trenutku kada pokreneš htop ništa ne znači — gledaj minut.
- Tretiraj punu memoriju kao problem. Gledaj
availablei svop, nefree. - Menjaj rang bez da razumeš uzrok. Curenje memorije ili skripta u petlji preseliće se na novi rang zajedno sa tobom. Povratak na niži rang nije podržan.
Ako su CPU, memorija i disk mirni, a aplikacija je spora, usko grlo je van mašine: spori spoljni API, DNS ili mreža klijenta. Proveri
curl -w '%{time_total}\n' -o /dev/null -sna adresu koja ti treba.