Sajt je spor — što sad? Prije nego ideš u Grafana dashboards, otvori SSH i 5 CLI alata reći će ti gdje je usko grlo. Ovo je vodič za real-time server troubleshooting bez složenog setup-a.
top / htop — što jede CPU i RAM
top dolazi sa svakim Linuxom. htop je friendlier verzija s bojama i scroll-om.
htop
Što gledat:
- Load average (top right): 1.5 znači jedna jezgra zauzeta 50%. Ako CPU ima 4 cores → load 4.0 = full. Load >cores = uska grla.
- CPU bars: koji proces pojede koliko %. Sort po CPU% (F6 → PERCENT_CPU).
- RAM: ako swap raste, OOM krizu ide. WP/Laravel apps koji bauk MySQL ili PHP-FPM workers.
- Process tree (F5): vidiš parent-child relationships, recognise PHP-FPM children, MariaDB threads.
Tipični WP problem
20+ php-fpm procesa na 100% CPU → bot napad ili spori plugin koji blokira workers. Provjeri access_log za suspicious IP-ove.
iotop — što jede disk I/O
iotop -ao
-a = cumulative, -o = samo aktivni procesi.
Što gledat:
- DISK READ / DISK WRITE per proces.
- MySQL koji upisuje 50MB/s u temp table → loš query, nedostaje indeks.
- PHP-FPM koji čita puno: session fajlovi, log fajlovi.
iftop — što jede network
iftop -i eth0
Što gledat:
- Outbound traffic po destinaciji — DDoS, scraper, sajt koji bauk vanjski API.
- Inbound traffic po izvoru — sumnjive IP-ove (Cloudflare ako koristiš, real IP-ove ako ne).
mytop / mysqltop — što radi MySQL
mytop -u root -p
Real-time MySQL dashboard:
- Active connections — koliko korisnika trenutno spojeno.
- Top queries — koje query se izvršavaju, koliko traju.
- Sleeping connections — visok broj = connection pool leak.
- Slow queries — count.
Pritisni e + ID za vidjet full SQL trenutnog query-ja. k + ID za kill ako blokira.
MySQL slow query log
Best long-term tool za query optimization. Enable u my.cnf:
[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
log_queries_not_using_indexes = 1
Restart MariaDB. Sutra analiziraj:
mysqldumpslow -s t -t 10 /var/log/mysql/slow.log
Top 10 najsporijih queries sortirano po vremenu. -s c sortira po count (najčešći).
Bolji alat: pt-query-digest iz Percona Toolkit-a.
EXPLAIN — analiziraj spori query
Kad pronađeš spori query, MySQL ti reci zašto:
EXPLAIN SELECT * FROM wp_posts WHERE post_status = 'publish' AND post_type = 'product' ORDER BY post_date DESC LIMIT 20;
Što gledat:
- type:
ALL= full table scan, vrlo sporo.refilirange= koristi indeks.const= primary key lookup. - rows: koliko redaka mora pregledat. <1000 OK, >100k crveno.
- Extra:
Using filesortiUsing temporarysu loši — treba indeks na ORDER BY kolonu.
ss / netstat — koje konekcije
ss -tunap | head -20
ss -tuln # listening ports
ss -s # summary
Što gledat:
- ESTABLISHED count — koliko aktivnih konekcija.
- TIME_WAIT — previše znači brzo connection opening/closing (pool leak).
- Konekcije prema vanjskim IP-ovima — što app šalje van.
df / du — disk space
df -h # po file systemu
du -sh /home/USER/* # po direktoriju
du -sh /home/USER/public_html/wp-content/uploads
Filter za top large folders:
du -h /home/USER | sort -hr | head -20
vmstat — system summary
vmstat 1 10
Snapshot svake sekunde, 10 sekundi. Kolone:
- r — procesi waiting for CPU. >cores = overloaded.
- b — procesi blocked na I/O.
- swap si/so — swap activity. Bilo koji broj >0 trajno = treba više RAM-a.
- cpu wa — waiting na I/O. >20% = disk je bottleneck.
tail / multitail — log fajlovi real-time
tail -f /var/log/nginx/error.log
tail -f /home/USER/logs/error_log
multitail /var/log/nginx/error.log /var/log/nginx/access.log
journalctl — systemd logovi
journalctl -u mysql -n 100
journalctl -u php-fpm --since '10 minutes ago'
journalctl -p err -n 50
cPanel-specifični alati
- WHM → Server Status — overview load.
- WHM → CPU and Concurrent Connection Usage — per account stats.
- CloudLinux LVE Manager — vidi koji account je hitao LVE limit (CPU, IO, EP).
- cPanel Resource Usage (klijent može vidjet u svom panelu) — graf usage-a.
LiteSpeed-specifični
/usr/local/lsws/bin/lswsctrl status
tail -f /usr/local/lsws/logs/error.log
LiteSpeed WebAdmin (default port 7080) ima vlastiti real-time dashboard.
Pattern: sajt usporen — što provjeravat redom
- htop → CPU? RAM? Koji proces?
- iotop → disk thrashing?
- mytop / mysqltop → spori query?
- nginx error.log → 502/504, upstream timeout?
- tail access.log → bot napad? Spike traffica?
- df -h → disk pun (sprječava write)?
U većini slučajeva jedan od ova 6 koraka pokaže root cause kroz 5 minuta.
Automated alerti
Ne čekaj da klijent zove. Postavi alerte:
- Load > cores × 2 — alert.
- RAM > 90% — alert.
- Disk > 85% — alert.
- MySQL connections > 80% max — alert.
- 5xx error rate > 1% — alert.
Tools: Netdata, Prometheus + Alertmanager, Datadog, cPanel built-in notifications.
WMD i server monitoring
Svi WMD managed VPS i dedicated serveri imaju 24/7 monitoring s automated alertovima za threshold breach. Tim Super brze podrške vidi alarm prije nego klijent javi problem. Za klijente s vlastitim serverima postavljamo Netdata (one-line install) + custom alert rules. Za enterprise — Grafana + Prometheus stack s long-term retention. Slow query log enabled na svakom MariaDB-u, weekly pt-query-digest analysis uključen u Pro Maintenance Plan.
FAQ
htop ili glances? htop za standard. Glances ako hoćeš sve-u-jednom (CPU + RAM + disk + network + alerts u jednom view-u). Oba free.
Mogu li imat htop na shared hosting? Ne ako nemaš SSH. Tu cPanel "Resource Usage" je tvoj jedini view.
Slow query log usporava server? Minimalno (1-2% overhead pri log_queries_not_using_indexes off). Vrijedi za long-term performance optimization.
Što ako ne mogu identificirat spor query? Enable general query log (kratko, jedan dan) + pt-query-digest. Vidi sve queries, ne samo spore.
Koliko često radit slow query review? Tjedno za aktivan sajt, mjesečno za stabilan.
Trebaš pomoć s server performance investigation? WMD Super brza podrška radi live troubleshooting — htop screen share, slow query analysis, fix preporuke. Javi se preko kontakt forme.