Skip to content
VDS · Rešavanje problema

CPU je na 100%

Kako da nađeš proces koji jede CPU jezgra, razlikuješ pravo opterećenje od čekanja na disk i odlučiš da li da popraviš kod ili pređeš na viši tier.

Ažurirano 23. avgust 2026.

Ravan deo na grafiku procesora u kartici „Pregled” nije sam po sebi vanredna situacija: kompajliranje projekta ili pravljenje arhive će iskreno iskoristiti sva jezgra i onda ih osloboditi. Alarmantno je kada ravan deo potraje satima i mašina prestane da reaguje. Hajde da otkrijemo šta je krivac.

Korak 1. Vidi šta troši resurse

Kartica „Ekran” (VNC) je zgodna za rad sa programima preko celog ekrana:

btop
htop

Serijska konzola ne prenosi veličinu prozora; tamo je uvek 80×24, pa će interfejs biti odsečen. Za tekstualnu konzolu koristi standardne komande:

top -b -n1 | head -20
ps aux --sort=-%cpu | head -10

Zapamti aritmetiku: %CPU se računa po jezgru. 400% na VDS-3 znači sva četiri jezgra, dok je 100% na VDS-4 samo jedno od šest.

Korak 2. Razlikuj procesor od diska

Prosečno opterećenje (load average) raste i zbog čekanja na ulaz/izlaz, ne samo zbog računanja:

uptime
vmstat 1 5

U izlazu vmstat obrati pažnju na kolone us (korisnički kod), sy (jezgro), wa (čekanje na disk) i st (ukradeno vreme). Veliko wa znači da procesor dangubi čekajući disk — usko grlo je brzina upisa, a ne računanje. Ravan deo na disku na našim paketima određuje pravilo: upis 60 MB/s po jezgru, ne manje od 60 i ne više od 400 MB/s, čitanje je duplo brže, a burst tri puta iznad ravni traje 30 sekundi. Ako zadatak piše neprekidno, burst će se završiti i udarićeš u ravan deo.

Korak 3. Istraži konkretan proces

pidstat -p <pid> 1 5
cat /proc/<pid>/status
journalctl -u <service> -n 100 --no-pager

Česti nalazi:

  • veb aplikacija se vrti u beskonačnoj petlji posle neuspešnog zahteva;
  • baza podataka izvršava upit bez indeksa — proveri njen sopstveni dnevnik sporih upita;
  • cron zadatak se pokreće češće nego što može da se završi, pa se instance gomilaju: ps aux | grep <name> će pokazati desetak kopija;
  • miner koji je dospeo na mašinu preko slabe root lozinke. Znak je proces sa besmislenim imenom koji radi pod nestandardnim korisnikom i visokim odlaznim saobraćajem. U tom slučaju je lakše reinstalirati mašinu iz kartice „Pristup” nego je čistiti.

Korak 4. Ograniči, ne ubijaj

Ako je proces potreban ali ne sme da smeta ostalima:

renice -n 15 -p <pid>
systemctl set-property myapp.service CPUQuota=200%

CPUQuota=200% su dva puna jezgra. systemd ograničenje preživljava restart servisa; renice ne.

Pre nego što ubiješ proces sa kill -9, probaj običan systemctl stop. Prisilno ubijanje baze podataka košta te pokvarenih fajlova i dugog oporavka pri sledećem pokretanju.

Kada nije kriv kod

Ako je opterećenje legitimno i stalno, procesor Ryzen 9 7950X radi svoj posao — jednostavno nema dovoljno jezgara za zadatak. Paket može da se menja samo naviše, uz doplatu za preostale dane plaćenog perioda: pogledaj članak Nadogradnja paketa i plaćanje razlike. Vraćanje na niži paket nije dostupno, pa prvo na grafiku za nedelju i mesec proveri da ravan deo nije jednokratna pojava.