Proč je server pomalý? Diagnostika přes htop, journalctl a df
Postup pro rychlou diagnostiku Linux serveru: zátěž CPU, paměť, disk, I/O, síť a logy. Konkrétní příkazy a jak číst jejich výstup.
Web se načítá pomalu, SSH reaguje se zpožděním nebo aplikace občas spadne. Než začnete zvětšovat VPS, zjistěte, kde je úzké hrdlo. Tento postup zabere pár minut a pokryje většinu běžných příčin.
1. První pohled: uptime a load
uptime
14:02:11 up 12 days, 3:41, 1 user, load average: 3.85, 2.10, 1.02
Tři čísla jsou průměrná zátěž za 1, 5 a 15 minut. Porovnejte je s počtem jader (nproc). Na 2jádrovém VPS znamená load 3,85, že procesy čekají ve frontě. Rostoucí trend (1,02 → 3,85) říká, že problém začal nedávno.
Pozor: load na Linuxu zahrnuje i procesy čekající na disk (stav D). Vysoký load s nízkým využitím CPU obvykle znamená pomalé I/O.
2. htop: kdo bere CPU a paměť
sudo apt install htop
htop
Na co se dívat:
- Pruhy CPU nahoře – zelená = uživatelské procesy, červená = kernel, šedá/modrá podle nastavení = čekání na I/O (zobrazení zapnete v nastavení F2).
- Mem a Swp – pokud je swap plný a stále se používá, serveru chybí RAM.
- Řazení –
F6nebo klávesyP(CPU) aM(paměť). - Strom procesů –
F5ukáže, který proces co spustil (třeba kolik PHP-FPM workerů běží). - Sloupec S –
Rběží,Sspí,Dčeká na disk,Zzombie.
3. Paměť: free a OOM killer
free -h
total used free shared buff/cache available
Mem: 1.9Gi 1.5Gi 90Mi 12Mi 350Mi 260Mi
Swap: 2.0Gi 1.1Gi 900Mi
Rozhodující je sloupec available, ne free. Linux volnou paměť používá jako cache a uvolní ji, když je potřeba.
Zjistěte, jestli kernel kvůli nedostatku paměti zabíjel procesy:
journalctl -k | grep -i -E 'out of memory|oom-kill'
Pokud tu vidíte svou databázi nebo aplikaci, máte jasnou příčinu pádů.
4. Disk: místo i výkon
Místo:
df -h
df -i # inody – můžou dojít i při volném místě
Plný disk způsobuje podivné chyby: databáze přestane zapisovat, nginx nevytvoří dočasný soubor, SSH přihlášení selže. Co zabírá místo:
sudo du -xh --max-depth=1 / | sort -h | tail -n 15
Výkon disku:
sudo apt install sysstat
iostat -xz 2
Sledujte sloupec %util (blízko 100 % = disk je vytížený) a r_await/w_await (průměrné čekání v ms). Který proces disk zatěžuje, ukáže sudo iotop -o (balíček iotop).
5. Rychlý souhrn: vmstat
vmstat 2 5
Klíčové sloupce:
| Sloupec | Význam | Varovný signál |
|---|---|---|
r |
procesy čekající na CPU | trvale víc než počet jader |
b |
procesy blokované na I/O | trvale > 0 |
si / so |
swap in / out | nenulové hodnoty = nedostatek RAM |
wa |
% času čekání na I/O | desítky procent |
st |
steal – CPU odebrané hypervizorem | trvale > 5–10 % |
Vysoký steal je specifický pro VPS: fyzický stroj je přetížený ostatními zákazníky a vy s tím uvnitř nic neuděláte. Řešení je kontaktovat poskytovatele nebo změnit tarif.
6. Logy: journalctl
journalctl -p err -b # chyby od posledního startu
journalctl -u nginx --since "30 min ago"
journalctl -f # vše průběžně
journalctl --disk-usage # kolik místa zabírá journal
Spadlé služby:
systemctl --failed
Logy aplikací mimo journal: /var/log/nginx/error.log, /var/log/mysql/error.log, /var/log/syslog.
7. Síť a spojení
ss -s # souhrn spojení
ss -tn state established | wc -l
ss -tlpn # co naslouchá na jakém portu
Tisíce spojení z několika IP můžou znamenat útok nebo agresivního crawlera. Nejčastější IP v access logu:
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head
Rozhodovací tabulka
| Příznak | Pravděpodobná příčina | Další krok |
|---|---|---|
| vysoký load, CPU 100 % | výpočetně náročný proces | htop → najít proces, optimalizovat |
vysoký load, CPU nízké, wa vysoké |
pomalý disk | iotop, dotazy do DB, swapování |
si/so > 0, OOM v logu |
málo RAM | omezit workery, přidat RAM/swap |
st vysoké |
přetížený hostitel | poskytovatel VPS |
df 100 % |
plný disk | du, logy, staré zálohy |
Trvalý monitoring
Ruční diagnostika řeší akutní problém. Pro historii a upozornění se hodí nástroje jako Netdata, Prometheus s node_exporterem nebo jednoduchý externí uptime monitoring.
Pokud máte server připojený v ColdHost AI, můžete v režimu Server a DevOps nechat AI navrhnout diagnostické příkazy, schválit je a nechat ji výstupy vyhodnotit.