Servery a DevOps

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.

12. 10. 2026 · 4 min čtení

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í – F6 nebo klávesy P (CPU) a M (paměť).
  • Strom procesů – F5 ukáže, který proces co spustil (třeba kolik PHP-FPM workerů běží).
  • Sloupec S – R běží, S spí, D čeká na disk, Z zombie.

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.