Operativni sistemi

Linux server: Kako uz pomoć "htop" komande pronaći skripte koje troše CPU i RAM

  • 12 min čitanja
  • Hostragons tim
Linux server: Kako uz pomoć "htop" komande pronaći skripte koje troše CPU i RAM

Na Linux serverima, htop komanda je jedan od najpraktičnijih alata za praćenje i otkrivanje skripti koje u realnom vremenu prekomjerno opterećuju procesor (CPU) ili memoriju (RAM). Analizom ekrana htop-a — CPU%, MEM%, PID, USER, TIME+ i COMMAND kolona — možete tačno vidjeti koji PHP, Python, Node.js, cron, baza ili sistemski proces „guši“ server. Nakon toga, proverite vlasnika procesa, putanju datoteke i svrhu izvršavanja, te intervenišite na siguran način.

Bilo da koristite shared hosting, VPS, VDS ili dedicated server, iznenadna usporenja najčešće su rezultat skripti koje se nekontrolisano izvršavaju. Na primjer, pogrešan WordPress plugin, PHP skripta koja upada u beskonačnu petlju, previše zahtjevan cron zadatak, neoptimiziran SQL upit ili kompromitovana web datoteka mogu u nekoliko minuta dovesti CPU korištenje do 100%. Kada RAM potrošnja naraste, servisi mogu „zakočiti“, MySQL veze pucaju, web stranice prikazuju 503 grešku ili Linux kernel aktivira OOM Killer i prekida procese.

Ovaj vodič vas korak po korak vodi od instalacije htop-a, čitanja ekrana, prepoznavanja skripti koje troše CPU ili RAM, pronalaska putanje po PID-u, pa do sigurne intervencije u sam proces. Takođe, pokrivamo sigurnosne sumnje, cron kontrolu, analizu logova i praktične preporuke za optimizaciju kako se problem ne bi ponovio. Ako često imate probleme sa resursima na serveru, razmislite o promjeni infrastrukture, te pogledajte VPS serverski paketi i Web hosting visoke performanse za poređenje opcija.

Šta je htop i zašto je praktičniji od top komande?

htop je terminalska aplikacija za interaktivno prikazivanje procesa na Linux sistemima. Slično kao „top“, ali nudi čitljiviji interfejs, šaren prikaz resursa, jednostavno sortiranje, pretragu, filtriranje i upravljanje procesima. Kod hitne dijagnostike na serveru, htop je prvi izbor većine administratora.

Sa htop-om možete u realnom vremenu pratiti:

  • Korištenje CPU-a po procesu
  • Korištenje RAM-a i količinu memorije po procesu
  • PID (identifikacijski broj procesa)
  • Korisnika koji je pokrenuo proces
  • Komandnu liniju ili ime skripte
  • Vrijeme rada i prioritet
  • Load average, ukupni RAM, swap i korištenje CPU jezgri

Kada na serveru radi više web stranica, korisnika ili servisa, ukupno korištenje resursa nije dovoljno — važno je znati koji korisnik, web sajt, cron zadatak ili skripta uzrokuje problem. htop je idealan za brzu početnu dijagnozu na Linux serveru.

Instalacija htop-a: komande prema distribuciji

Mnoge moderne Linux distribucije ne dolaze sa htop-om unaprijed instaliranim. Ako imate root ili sudo privilegije, instalacija traje svega par sekundi. Pre instalacije, preporučuje se osvježiti listu paketa, pogotovo na novom serveru, da se izbjegnu greške.

Instalacija na Ubuntu i Debian serverima

Na Ubuntu/Debian serverima koristite:

sudo apt update

sudo apt install htop -y

Nakon toga, pokrenite htop komandom u terminalu. Ako nemate sudo pristup, obratite se hosting podršci. Na upravljivim VPS serverima root pristup obično pripada vama.

Instalacija na AlmaLinux, Rocky Linux, CentOS i RHEL

Na RHEL baziranim sistemima paket menadžer može biti dnf ili yum:

sudo dnf install htop -y

Na starijim CentOS verzijama treba prvo instalirati EPEL repozitorij:

sudo yum install epel-release -y

sudo yum install htop -y

Nakon uspješne instalacije, upišite htop u terminalu i otvorit će se šaren ekran za praćenje procesa. Ako ste novi u upravljanju serverom, pogledajte vodič za Linux komande za osnovne komande.

Čitanje htop ekrana: značenje kolona

Na vrhu htop ekrana vidjet ćete CPU jezgre, RAM, swap, broj taskova, threadova, load average i uptime. Dolje se prikazuju aktivni procesi. Najvažnije kolone za dijagnozu su:

Čitanje htop ekrana: značenje kolona
Kolona Značenje Kada posumnjati?
PID Jedinstveni broj procesa Za provjeru putanje i povezanih procesa
USER Korisnik koji je pokrenuo proces Provjeriti ako nešto radi pod neočekivanim korisnikom
CPU% Trenutno korištenje procesora Procesi koji dugo ostaju na 80–100% treba analizirati
MEM% Udio RAM-a koji proces koristi Skripte koje troše 20%+ memorije su rizične
TIME+ Ukupno CPU vrijeme procesa Pokazuje dugotrajne procese koji troše resurse
COMMAND Pokrenuta komanda, servis ili skripta Za procese poput php, python, node, bash, tražiti punu putanju

Pazite: povremeni skok CPU-a nije uvijek problem. Backup, optimizacija slika, čišćenje cache-a ili veliki promet mogu privremeno podići CPU. Problem je kad isti proces satima „jede“ CPU/RAM, load average premaši broj jezgri, a web servisi ne odgovaraju.

Otkrivanje skripti koje troše CPU pomoću htop-a

Da pronađete procese koji prekomjerno troše CPU, u htop-u sortirajte po CPU% (F6 ili klik na kolonu, ako terminal podržava miš). Na vrhu će biti procesi koji najviše opterećuju procesor.

Korak 1: Sortirajte po CPU%

Sortirajte procese prema CPU%. Ako su php-fpm, php, python3, node, java, mysqld ili bash stalno na vrhu, zabilježite ih. Na serverima s više jezgri, jedan proces može pokazivati 200% ili 400% što znači da koristi više jezgri istovremeno.

Korak 2: Zabilježite PID i USER

Upišite PID i USER info za sumnjivi proces. Npr. PID 24819, USER siteuser, COMMAND php /home/siteuser/public_html/wp-cron.php — najvjerovatnije problem vezan za WordPress cron. Ako je COMMAND skraćen, uključite prikaz cijele komandne linije u htop-u ili koristite ps za detalje.

Korak 3: Po PID-u provjerite pravu komandu

Pomoću:

ps -fp PID

Primjer:

ps -fp 24819

Izlaz pokazuje odakle se skripta pokreće — npr. php /home/korisnik/public_html/index.php označava web zahtjev, php /home/korisnik/public_html/wp-content/plugins/nepoznat-plugin/task.php plugin problem.

Korak 4: Provjerite putanju i otvorene datoteke

Za prikaz otvorenih datoteka procesa koristite lsof:

lsof -p PID

Ova komanda pokazuje koje datoteke, logove i konekcije proces koristi. Tako možete znati koja web folder je aktivna. Ako u /home/example/public_html/wp-content/uploads vidite čudnu PHP skriptu, moguć je sigurnosni incident. Tada ne treba samo ubiti proces: očistite datoteke, promijenite šifre, ažurirajte plugine/teme i uradite sigurnosnu provjeru. Za SSL i sigurne konekcije pogledajte Rešenja za SSL certifikate.

Otkrivanje RAM-problematičnih skripti uz htop

Problemi s RAM-om su često „podmukli“ — CPU skok se odmah osjeti, ali kada nestane RAM-a, servisi se gase, swap se prekomjerno koristi, a server kasni. Sortirajte htop po MEM% da vidite koje skripte najviše troše memoriju.

Razumijevanje MEM%, RES i Swap vrijednosti

MEM% pokazuje udeo memorije, dok kolone VIRT, RES, SHR mogu biti prikazane. RES je najvažniji — pokazuje stvarnu fizičku potrošnju RAM-a. VIRT nije uvijek relevantan za realnu RAM potrošnju.

Na VPS-u sa 4 GB RAM-a, ako jedan PHP proces ima 900 MB RES — to je alarm. Node.js koji raste sa 200 MB na 1.5 GB ukazuje na curenje memorije. Visoka RAM potrošnja kod MySQL/MariaDB može biti normalna zbog keširanja, ali treba zajedno analizirati performanse upita i ukupni RAM.

Tipični uzroci skripti koje troše RAM

  • Beskonačne petlje u PHP, Python ili Node.js kodu
  • Učitavanje velikih CSV, XML ili JSON datoteka odjednom u memoriju
  • Neoptimizirani WordPress pluginovi ili teme
  • Obrada slika, generisanje PDF-a, konvertovanje videa
  • Nedostatak keša, pa se teški upiti stalno ponavljaju
  • Botovi ili napadi koji pokreću mnoštvo istih skripti
  • Servisi sa curenjem memorije (memory leak) koji dugo rade u pozadini

Kill komanda daje samo kratkoročnu olakšicu. Trajno rješenje je analiza skripte: šta radi, koji input je uzrokuje, zašto ne oslobađa memoriju.

Pretraga, filtriranje i „tree“ prikaz u htop-u

Na serveru sa stotinama procesa, ručno traženje je naporno. htop nudi korisne prečice: F3 za pretragu, F4 za filter, F5 za prikaz procesa u „tree“ (stablo) formi. Tree view je odličan za parent-child veze — npr. php-fpm child procese ispod Apache/nginx, skripte pokrenute iz crona, Node.js servise pod supervisor-om.

Praktični filteri

  • Unesite „php“ da vidite samo PHP procese
  • „python“ za Python skripte
  • „wp-cron“ za WordPress cron procese
  • „node“ za Node.js aplikacije
  • Filtrirajte po korisničkom imenu za procese jednog hosting accounta

Filteri štede vrijeme, pogotovo na serverima sa više korisnika/web sajtova. Na primjer, ako hostujete 30 sajtova, kombinujte USER i putanju skripte da brzo locirate problem. Za jednostavniju administraciju domena, pogledajte provjera i registracija domene.

Sigurna intervencija kod sumnjivog PID-a

Čim otkrijete proces koji troši resurse, poželite ga odmah „ubiti“ (kill -9). Ali to može uzrokovati gubitak podataka, nekompletno upisivanje fajlova ili neispravnost servisa. Bolje je postupiti pažljivo.

1. Zabilježite podatke o procesu

Zapišite PID, USER, COMMAND, CPU%, MEM% i vrijeme. Ako možete, napravite screenshot htop-a. Ove informacije su korisne za poređenje kod ponavljanja problema ili za tehničko objašnjenje klijentima.

2. Provjerite putanju procesa

Uz ps -fp PID i lsof -p PID utvrdite putanju. Ako je u web root-u, analizirajte logove aplikacije (wp-content/debug.log za WordPress, access/error log za server, slow log za PHP-FPM).

3. Prvo pokušajte „nježno“ zaustaviti proces

Pošaljite standardni signal za prekid:

kill PID

Sačekajte par sekundi i provjerite u htop-u je li proces ugašen. Ako nije — i ozbiljno narušava server — kao krajnju mjeru koristite:

kill -9 PID

kill -9 momentalno prekida proces bez čišćenja; oprez kod procesa koji pišu u bazu ili fajlove!

4. Ako se proces stalno vraća, pronađite uzrok

Ako se proces odmah ponovo pokreće, mogući uzrok su cron, systemd servis, supervisor, web zahtjevi ili botovi. Provjerite cron (crontab -l), sistem servis (systemctl status naziv-servisa), web promet (access log). Kod WordPress-a, oslonite se na pravi cron i cache politiku.

Kombinovanje htop nalaza sa logovima

Kombinovanje htop nalaza sa logovima

htop pokazuje šta troši resurse, a logovi zašto. Bez kombinovanja oba, dijagnoza je nepotpuna. Npr. php-fpm proces ima 180% CPU, ali bez access loga ne znate koji URL ili bot ga pokreće.

Logovi koje treba kontrolisati:

  • Access log web servera: pokazuje URL-e sa najviše zahtjeva
  • Error log servera: PHP greške, dozvole, 500 greške
  • PHP-FPM slow log: usporene PHP skripte i funkcije
  • MySQL slow query log: teški SQL upiti
  • Auth/secure log: sumnjivi pokušaji prijave
  • Cron log: kad su pokretani cron zadaci

Na primjer, ako PID sa visokim CPU-om u access logu ima hiljade poziva na /wp-admin/admin-ajax.php, problem je plugin, bot ili loše AJAX rješenje. U tom slučaju razmotrite WAF, rate limit, cache i optimizaciju plugina. Za širu analizu brzine web sajta, pogledajte Optimizacija brzine web stranice.

Kako razlikovati normalno i problematično opterećenje?

Visoko korištenje resursa nije uvijek krizno stanje. Važno je uzeti u obzir hardver, promet, tip aplikacije i održavanje. Na VPS-u sa 2 jezgre, load average od 6–8 je ozbiljan problem; na dedicated serveru sa 16 jezgri, isto može biti normalno. Zato load average interpretirajte u odnosu na broj jezgri.

Kako razlikovati normalno i problematično opterećenje?
Posmatranje Mogući uzrok Preporučena akcija
CPU kratko na 100%, zatim normalan Privremeno opterećenje Provjerite log, ne reagujte odmah
Isti PID dugo troši CPU Beskonačna petlja ili težak zadatak Pronađite skriptu, analizirajte kod
RAM stalno raste, ne opada Curenje memorije Provjerite kod i worker postavke
Brzo raste swap Nedovoljno RAM-a Planirajte RAM upgrade ili optimizaciju
Mnogo istih PHP procesa Botovi ili veliki promet Provjerite access log, firewall, cache

Ova poređenja pomažu da izbjegnete nepotrebnu paniku. Na webshopovima, tokom akcija i ažuriranja inventara, privremeno se povećavaju resursi. Ako to utječe na korisnike, razmotrite optimizaciju i povećanje server kapaciteta.

Sigurnosne sumnje: može li skripta biti zlonamjerna?

Skripta koja troši CPU/RAM nije uvijek „bezopasna“. Na kompromitovanim sajtovima napadači pokreću spam, mining, proxy, DDoS botove ili „backdoor“ skripte. htop ekranu pažljivo analizirajte: neočekivan USER, čudne komande, nasumična imena fajlova, procesi iz /tmp ili uploads foldera — sve to može biti znak napada.

Sumnjivi simptomi

  • Nasumične ili nerazumljive datoteke u COMMAND koloni
  • Procesi iz /tmp, /dev/shm ili uploads foldera
  • Neobični perl, python ili bash procesi
  • Procesi sa velikim izlaznim konekcijama
  • Korisnik koji pokreće mnoštvo procesa u kratkom vremenu
  • Web fajlovi sa nedavnim neovlaštenim izmjenama

Prije gašenja procesa, prikupite dokaze (izlaz komandi), provjerite dozvole, izolirajte sumnjive fajlove, promijenite sve šifre, ažurirajte pluginove/teme i uradite sigurnosnu provjeru. Dvostruka autentikacija i ograničavanje prava pisanja smanjuju rizik.

Najbolje prakse za sprječavanje ponavljanja problema s performansama

Naći uzrok je važno, ali još važnije je spriječiti ponavljanje. Sljedeće mjere značajno smanjuju CPU/RAM probleme na Linux serverima:

  • Podesite PHP memory_limit, max_execution_time i pm.max_children prema kapacitetu servera
  • Koristite cache u WordPress-u, Joomli ili custom aplikacijama
  • Uklonite nepotrebne plugine, teme i module
  • Optimizujte teške SQL upite pomoću MySQL slow query loga
  • Rasporedite cron zadatke umjesto da svi rade istovremeno
  • Botove suzbijajte rate limitom, robots.txt i firewall pravilima
  • Rotirajte logove, pratite utjecaj velikih log fajlova na disk i RAM
  • Pratite server metrike ne samo kod problema, već i preventivno

Ako je potrošnja resursa stalno visoka uprkos optimizaciji, možda je problem u rastu prometa, aplikacije ili ograničenju hosting paketa. Tada je razumno razmotriti skalabilni VPS, više RAM-a, NVMe disk ili izolirani server. Za analizu potreba pogledajte Hosting paketi i rješenja za korporativne servere.

Primjer: CPU eksplozija na WordPress sajtu

Recimo da imate VPS sa 4 jezgre i 8 GB RAM-a, više WordPress sajtova. Korisnici prijavljuju sporost i povremene 502 greške. U htop-u load average je 12, sve jezgre su maksimalno opterećene, a na vrhu je mnoštvo php-fpm procesa istog korisnika.

F4 filtrira po korisničkom imenu. Zabilježi se PID procesa koji troši CPU. ps -fp PID pokazuje php-fpm worker; lsof -p PID otkriva pristup fajlu /home/site/public_html/wp-content/plugins/example-importer/import.php. U access logu se vide ponavljani AJAX pozivi i zahtjevi za import.

Rješenje: zaustaviti import, isključiti zakazani zadatak plugina, podijeliti import u manje dijelove, podesiti max_execution_time. Umjesto wp-cron koristi se pravi system cron. Load average pada na 1.8, CPU se stabilizuje, web brzina osjetno raste. Ovo pokazuje da htop daje najbolje rezultate kad se koristi zajedno sa ps, lsof i log analizom.

Najčešće greške pri korištenju htop-a

  • Ubiti samo proces na vrhu bez analize uzroka
  • VIRT vrijednost tumačiti kao stvarnu RAM potrošnju
  • RAM potrošnju MySQL-a zbog cache-a smatrati problemom
  • kill -9 koristiti kao prvu opciju
  • Optužiti aplikaciju ili korisnika bez provjere logova
  • Load average komentarisati bez uzimanja u obzir broja jezgri
  • Kod sigurnosnih problema ne provjeriti integritet fajlova

Izbjegavanjem ovih grešaka smanjujete downtime i rizik od gubitka podataka. Ispravna dijagnoza je vrijednija od brzog, ali pogrešnog „liječenja“.

Često postavljana pitanja

Čemu služi htop komanda na Linux serveru?

htop prikazuje procese, njihovo korištenje CPU-a, RAM-a, korisnika, PID i komandnu liniju u realnom vremenu. Tako brzo otkrivate skripte koje prekomjerno troše resurse.

Kako uz htop pronaći skriptu koja troši CPU?

Sortirajte procese po CPU%, zabilježite PID i USER za proces koji je dugo na vrhu. Potom pomoću ps -fp PID i lsof -p PID otkrijte putanju skripte i što se tačno izvršava.

Trebam li gledati MEM% ili VIRT kod RAM potrošnje?

MEM% i posebno RES su relevantni za analizu RAM-a. VIRT prikazuje rezervisan virtualni RAM, ali ne nužno stvarnu potrošnju.

Da li je ispravno odmah koristiti kill -9 za problematičan proces?

Ne preporučuje se. Prvo dokumentujte proces, provjerite putanju i pokušajte kill PID. kill -9 koristite samo ako proces ne reaguje i ozbiljno ugrožava server.

Da li visoka CPU potrošnja u htop-u znači napad?

Ne nužno. Backup, import, cache ili veliki promet mogu podići CPU. Ali čudni fajlovi, procesi iz /tmp/uploads i neočekivani korisnici su alarm za sigurnost.

Zaključno: htop je brz i efikasan alat za otkrivanje skripti koje prekomjerno troše CPU i RAM na Linux serveru. Najbolji rezultati se postižu kombinovanjem htop uvida sa PID analizom, lsof, cron kontrolom i logovima. Ako su problemi s resursima česti, optimizujte aplikaciju, ali i razmislite o jačoj infrastrukturi; na Hostragons portalu možete bez pritiska uporediti hosting, VPS i SSL opcije i izabrati ono što najviše odgovara vašem projektu.

Podijelite ovaj članak:

Hostragons tim

Ažurirani vodiči našeg stručnog tima o hostingu, serverima i domenima. Hajde da zajedno pronađemo pravo rješenje za vaš projekat.

Kontaktirajte nas