HostiServer
2026-01-31 13:15:00
Konfigurace serveru pro high-traffic: CPU, RAM, NVMe, tuning
Když server přestává stíhat
Web roste — a to je dobře. Dokud server stíhá. Jednoho dne provoz vzroste, stránky se začnou načítat pomaleji, CPU jde do červené zóny, databáze zpomaluje. Ten „výkonný server", který měl ještě včera rezervu — teď sotva dýchá.
Zní to povědomě? Tohle není katastrofa — je to signál k přehodnocení konfigurace. Protože nejde o to „koupit dražší", ale o to správně nakonfigurovat.
Za roky práce s high-traffic projekty jsme viděli stovky případů, kdy správný tuning dal lepší výsledek než upgrade hardwaru. Server za 50 $/měsíc s optimální konfigurací často předběhne server za 200 $ s výchozím nastavením.
Co je high-traffic?
Přesné číslo neexistuje. Jeden web padá při 2 000 současných uživatelích, jiný zvládne 50 000. Vše závisí na třech faktorech:
- Kolik současných požadavků server zpracovává
- Jak se chová vaše CMS nebo aplikace
- Kolik „těžkého" obsahu — obrázků, skriptů, dotazů do databáze
Pro blog je 10 000 návštěvníků nic. Pro internetový obchod s filtry, synchronizací skladů a dynamickými cenami — to je už vážná zátěž. Jeden požadavek na hlavní stránku blogu je jeden SELECT z databáze. Jeden požadavek na katalog Magenta s filtry je desítky dotazů, přepočet cen, kontrola skladových zásob.
Tento průvodce vám pomůže pochopit konfiguraci serveru pro projekty s vážným provozem — od výběru hardwaru po jemné ladění softwaru.
Procesor: nejen jádra
Mnozí se dívají pouze na počet jader — a to je chyba. V roce 2026 je nejdůležitější výkon jednoho vlákna (single-thread performance). Ten určuje, jak se bude PHP, Python nebo Node.js chovat pod zátěží.
PHP vykonává každý požadavek v jednom vlákně. Pokud máte 32 pomalých jader místo 8 rychlých — PHP bude zpracovávat každý jednotlivý požadavek pomaleji. Paralelismus pomáhá jen když je mnoho současných požadavků, ale každý z nich stále závisí na rychlosti jednoho jádra.
Orientační doporučení:
- 4–8 jader — malé firemní weby, blogy, lehké CMS
- 12–16 jader — střední internetové obchody, SaaS projekty
- 24+ jader — kontejnery, streaming, analytika, velké databáze
Někdy 16jádrový fyzický server pracuje lépe než 32jádrový virtuální. Důvod — virtualization overhead. Část výkonu se ztrácí mezi vrstvami virtualizace. Na VPS sdílíte fyzické zdroje s ostatními klienty, což vytváří dodatečnou latenci.
Vlákna (threads) jsou také důležitá, ale pouze pokud je software využívá. Node.js, Go, Nginx — ano. WordPress — bohužel ne. Typický WordPress neumí paralelizovat jeden požadavek na více vláken — prostě čeká, až databáze vrátí výsledek.
ℹ️ Jak zkontrolovat: Spusťte cat /proc/cpuinfo | grep "model name" pro zobrazení modelu CPU. Pak porovnejte single-thread benchmark vašeho procesoru na PassMark nebo Geekbench. AMD EPYC a Intel Xeon Scalable nejnovějších generací mají dobrý jednovláknový výkon.
Paměť a caching
RAM je kyslík pro server. Když jí není dost, systém začne zapisovat dočasná data na disk (swap) a web „umírá" na latenci. Swap na NVMe je stále stokrát pomalejší než RAM.
Orientace pro výběr RAM:
- 8 GB — malý WordPress nebo firemní web
- 16–24 GB — internetový obchod, SaaS
- 32–64 GB — velké databáze, analytika, video
Ale ani 64 GB nezachrání, pokud není caching. Redis, Memcached, Varnish — to je to, co skutečně odlehčí CPU a databázi. Bez cache každý požadavek jde do databáze, PHP generuje stránku znovu, server dělá stejnou práci tisíckrát.
Jak funguje caching
Redis — ukládá výsledky dotazů do databáze, uživatelské relace, object cache. Jeden dotaz do Redis trvá mikrosekundy, dotaz do MySQL milisekundy. Rozdíl 1000×.
FastCGI Cache — Nginx ukládá hotovou HTML stránku a doručuje ji bez volání PHP vůbec. Pro anonymní uživatele je to ideální řešení.
OPcache — cachuje zkompilovaný PHP kód. Bez něj PHP překompiluje každý soubor při každém požadavku.
💡 Reálný případ: Internetový obchod na Magento 2 během výprodeje. Před optimalizací: 15 RPS, TTFB ~1,2 sekundy. Server se „dusil" z front PHP-FPM. Po implementaci Redis pro caching relací a backend cache + nastavení FastCGI Micro-caching (caching anonymních požadavků na 1–2 sekundy): 65+ RPS, TTFB ~250–300 ms. Rozdíl 4× — bez výměny hardwaru.
NVMe: rychlost, na kterou si zvyknete
Kdo přešel z SSD na NVMe — zpátky se nevrací. Rozdíl není v procentech, ale v násobcích — zejména pro databáze a logy. Běžný SATA SSD dává 500–600 MB/s sekvenčního čtení a ~50 000 IOPS. NVMe — 3000–7000 MB/s a 500 000+ IOPS.
NVMe pracuje přímo přes sběrnici PCIe, bez omezení SATA řadiče. Výsledek: nižší latence, více I/O operací za sekundu, stabilnější práce pod zátěží. Pro databázi je to kritické — každý dotaz je přístup na disk.
RAID konfigurace
Důležité: nešetřete na spolehlivosti.
- RAID-1 (zrcadlo) — minimum pro produkci. Dva disky s identickými daty. Jeden selže — běžíte na druhém
- RAID-10 — pro maximální výkon a spolehlivost. Kombinace zrcadla a stripe
- RAID-0 — rychlý, ale při selhání jednoho disku přijdete o VŠE. Pouze pro dočasná data
V jednom projektu přenesení eCommerce webu z SSD pole na NVMe RAID-1 snížilo průměrný čas načítání stránky z 1,9 na 1,2 sekundy. Rozdíl je zejména patrný na stránkách katalogu s filtry — tam je hodně náhodných čtení z databáze.
Síť: úzké místo, na které se zapomíná
Někdy je všechno zdánlivě v pořádku — CPU je normální, RAM stačí, cache je nakonfigurovaná — ale web stále zpomaluje. Důvod je jednoduchý: úzká šířka pásma. Zejména je to patrné při velkém počtu současných spojení nebo přenosu velkých souborů.
100 Mbit/s v roce 2026 je úroveň kanceláře, ne produkce. Při 100 Mbit/s můžete doručit maximálně ~12 MB/s. Pokud průměrná stránka váží 2 MB (s obrázky), můžete současně obsluhovat pouze 6 uživatelů na plné rychlosti.
Pro stabilní provoz potřebujete:
- Minimum 1 Gbit/s port — standard pro jakýkoli vážný projekt
- Podpora HTTP/3 (QUIC) — rychlejší navázání spojení, lepší práce na mobilních sítích
- Připojení CDN pro globální publikum — statiku doručuje server nejbližší uživateli
CDN může převzít 60–80 % zátěže, pokud je vaše publikum geograficky rozptýlené. Obrázky, CSS, JavaScript, video — vše se cachuje na edge serverech po celém světě. Hlavní server se zabývá pouze dynamickým obsahem.
Hostiserver kombinuje CDN s NVMe konfiguracemi — to odstraňuje úzká místa bez složitých řešení. Nastavení zabere pár minut přes ovládací panel.
Tuning: rozdíl mezi „funguje" a „létá"
I ten nejdražší hardware může zpomalovat kvůli špatné konfiguraci. Typická situace: koupili výkonný server, nainstalovali CMS, nechali výchozí nastavení MySQL a PHP-FPM — a diví se proč je to pomalé. Výchozí hodnoty jsou navrženy pro minimální spotřebu zdrojů, ne pro výkon.
PHP-FPM (příklad pro 16 GB RAM)
Používáme dynamický režim (pm = dynamic) pro smíšené zátěže nebo static pro vysoce zatížené projekty s předvídatelným provozem:
[www]
pm = dynamic
pm.max_children = 150
; Vzorec: (Volná RAM) / (velikost PHP procesu ~60-100MB)
; Pro 16GB server s 12GB volné RAM: 12000/80 ≈ 150
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 30
; Restart workerů pro zamezení únikům paměti
pm.max_requests = 1000
; Timeout pro dlouhé skripty (import, generování reportů)
request_terminate_timeout = 300
Proč je pm.max_requests důležitý: PHP procesy mohou „téct" — postupně zabírat více paměti kvůli špatně napsaným pluginům nebo rozšířením. Bez omezení za pár hodin sežerou veškerou RAM. S pm.max_requests = 1000 se každý worker restartuje po 1000 zpracovaných požadavcích.
MySQL / MariaDB
[mysqld]
# Hlavní parametr — 50-70% z celkové RAM
# Pro 16GB server kde MySQL je jediný těžký proces
innodb_buffer_pool_size = 10G
# 25% z buffer pool pro zrychlení zápisů
innodb_log_file_size = 2G
# Závisí na počtu PHP procesů
# Každý PHP worker může držet 1-2 spojení
max_connections = 500
# Logování pomalých dotazů — POVINNÉ
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
O slow_query_log: toto je váš hlavní diagnostický nástroj. Všechny dotazy delší než long_query_time sekund jdou do logu. Pak je analyzujete přes mysqldumpslow nebo pt-query-digest a optimalizujete nejpomalejší.
Nginx
worker_processes auto; # Jeden na jádro CPU
worker_connections 4096; # Max spojení na worker
# Zamezení zápisu velkých PHP odpovědí do souborů
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
# Gzip pro úsporu bandwidth
gzip on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_types text/plain text/css application/json
application/javascript text/xml
application/xml image/svg+xml;
# Brotli je ještě efektivnější (pokud je nainstalován modul)
# brotli on;
# brotli_comp_level 6;
Tyto „drobnosti" mohou zdvojnásobit propustnost bez upgrade hardwaru. Jeden klient po správném nastavení těchto parametrů získal nárůst ze 40 na 95 RPS na stejném serveru.
Monitoring: jak poznat že server nestíhá
Známky problémů
- CPU > 80 % po dobu 5+ minut — Warning
- CPU > 95 % — Critical, potřeba okamžité reakce
- RAM > 90 % (kromě cache) — server začíná swapovat
- Disk Space < 10 % — nejčastější příčina pádu databáze
- HTTP 5xx > 1 % provozu — něco je vážně špatně
Steal Time (%st) — skrytý nepřítel VPS
Pokud v htop nebo top vidíte Steal Time > 1–2 % — sousedé v cloudu vám berou CPU zdroje. To je známka že je čas přejít na Dedicated.
Nejdůležitější metriky pro high-traffic
- Average Response Time (Latency) — pokud je hardware v pořádku, ale Latency roste — problém je v kódu nebo blokováních v DB
- Error Rate — procento 4xx/5xx chyb
- TTFB (Time to First Byte) — čas do prvního bajtu odpovědi
Pravidlo: pokud kterýkoli z těchto ukazatelů je v červené zóně déle než 5 minut — to už není „špičkový moment", ale systémový problém.
Zátěžové testování
Před spuštěním reklamy nebo očekávanou sezónní špičkou — otestujte server. Lepší zjistit problémy v testu než během výprodeje. Load testing ukazuje skutečný limit vašeho serveru — kolik současných uživatelů zvládne než začne zpomalovat.
Nástroje pro testování
k6 (doporučujeme) — nejmodernější nástroj. Scénáře v JavaScriptu, vynikající reporty, snadná integrace do CI/CD. Můžete popsat realistické chování uživatele: navštívil hlavní stránku, přešel do katalogu, přidal zboží do košíku.
# Instalace
sudo apt install k6
# Jednoduchý test se 100 virtuálními uživateli po dobu 30 sekund
k6 run --vus 100 --duration 30s script.js
wrk — pro kontrolu čisté propustnosti. Nejrychlejší ze všech, ale bez složitých scénářů:
# 12 vláken, 400 spojení, 30 sekund
wrk -t12 -c400 -d30s https://example.com/
Locust — pokud potřebujete složité scénáře chování uživatelů. Napsán v Pythonu, má webové rozhraní pro sledování testu v reálném čase.
Apache Benchmark (ab) — nejjednodušší varianta, již nainstalovaná na většině serverů:
# 1000 požadavků, 100 současných
ab -n 1000 -c 100 https://example.com/
Co se považuje za normální výsledek
| Typ webu | Normální RPS | Poznámka |
|---|---|---|
| Landing page | 500+ RPS | Statika, minimum dynamiky |
| WordPress blog | 100–200 RPS | Se zapnutým cachingem |
| WooCommerce | 50–100 RPS | Bez full page cache |
| Magento 2 | 30–80 RPS | Složitý CMS |
Pokud jsou vaše výsledky výrazně nižší — je prostor pro optimalizaci. Věnujte pozornost nejen RPS, ale i percentile latency: p95 a p99 ukazují čas odpovědi pro 95 % a 99 % požadavků. Pokud je průměrný čas 200 ms, ale p99 je 5 sekund, část uživatelů dostává velmi pomalé odpovědi.
ℹ️ Důležité: Testujte z jiného serveru, ne z toho kde běží web. Jinak samotný proces testování sežere zdroje a výsledky budou nepřesné. Ideálně — spouštějte k6 ze samostatného VPS ve stejném datacentru.
Scaling: když upgrade nepomáhá
Dříve nebo později server narazí na strop. Ani výkonný hardware nezachrání, pokud architektura není rozdělena. Jsou dvě cesty: vertikální škálování (více zdrojů na jednom serveru) a horizontální (více serverů).
Kdy přejít z VPS na Dedicated
VPS je virtuální stroj na sdíleném fyzickém serveru. Sdílíte zdroje s ostatními klienty. Dedicated — celý fyzický server je váš. Kdy VPS nestačí:
- Provoz: stabilně přes 100–150 RPS nebo 50 000+ unikátních návštěvníků denně
- Steal Time (%st): v top/htop ukazuje > 1–2 % — sousedé vám berou CPU zdroje
- I/O Wait: vysoké latence diskového subsystému kvůli sdílenému storage
- Nestabilní TTFB: čas odezvy „plave" bez viditelných příčin ve vašem kódu
Steal Time (%st) — hlavní indikátor. Pokud vidíte více než 1–2 % stabilně — sousedé v cloudu vám berou zdroje. Na Dedicated tento problém neexistuje.
Horizontální škálování
Když CPU drží nad 70 % a stránky jsou stále pomalé — čas rozdělit architekturu:
- Databáze na samostatný server — nejčastěji první co se vynáší. MySQL/PostgreSQL dostane vyhrazené zdroje, nekonkuruje s PHP o CPU
- Statika na CDN — obrázky, CSS, JS doručuje CDN, hlavní server se zabývá pouze dynamikou
- Redis na samostatný server — při velkých objemech cache
- Load balancer — rozděluje provoz mezi více web serverů
Je to složitější na nastavení a údržbu, ale dává stabilitu a možnost škálovat dále. Všechny velké projekty procházejí touto fází — jinak uvíznou na hranici jednoho serveru.
ℹ️ Typická high-load architektura:
Load Balancer (Nginx/HAProxy) → 2–3 Web servery (PHP-FPM) → Redis (relace, cache) → MySQL Primary + Replica (read/write split) → CDN pro statiku
Časté chyby
- ❌ Koupit „s rezervou" a nenakonfigurovat
-
Výkonný server s výchozím nastavením pracuje hůře než slabší se správným tuningem. Polovina zdrojů leží ladem, zatímco web stále zpomaluje kvůli neoptimálním parametrům PHP-FPM nebo MySQL.
- ❌ Ignorovat rychlost disku
-
Mnozí se dívají pouze na CPU a RAM. A pak se diví, proč databáze zpomaluje. Pro high-traffic NVMe není luxus — je to nutnost.
- ❌ Myslet že RAID = záloha
-
RAID chrání před selháním disku, ale ne před náhodným smazáním, hacknutím nebo ransomwarem. Zálohy jsou potřeba zvlášť, na jiný server nebo storage.
- ❌ Pluginy co zabíjejí cache
-
Některé WordPress pluginy nebo Magento moduly přidávají unikátní parametry ke každému požadavku, což znemožňuje caching. Výsledek — každý požadavek se generuje znovu.
- ❌ Neomezovat PHP workery
-
Bez
pm.max_requestsmohou PHP procesy „bobtnat" z úniků paměti. Za pár hodin sežerou veškerou RAM a server padá.
Příklady konfigurací které fungují
| Typ webu | CPU | RAM | Disk | Síť |
|---|---|---|---|---|
| WordPress | 4 vCPU | 8 GB | NVMe 100 GB | 1 Gbit/s |
| WooCommerce střední | 8 vCPU | 16 GB | NVMe RAID-1 | 1 Gbit/s + CDN |
| SaaS / API | 12 vCPU | 32 GB | NVMe RAID-1 | 1 Gbit/s |
| High-load eCommerce | 16–24 vCPU | 32–64 GB | NVMe RAID-10 | 1–10 Gbit/s |
Toto jsou reálné produkční konfigurace, které přežily špičky provozu bez pádů.
🚀 Připraveni vybrat správný hosting?
Flexibilita Cloud (VPS) nebo výkon dedikovaných serverů — řešení která rostou s vámi.
💻 Cloud (VPS) Hosting
- Od 19,95 $/měs — Začněte v malém, škálujte okamžitě
- KVM virtualizace — Garantované zdroje bez oversellingu
- Okamžité upgrady — Bez výpadku
- NVMe úložiště — Rychlý výkon
- 24/7 podpora — <10 min odpověď
🖥️ Dedikované servery
- Od 200 $/měs — Moderní konfigurace
- Vlastní konfigurace — Intel nebo AMD, nejnovější modely
- Více lokalit — EU + USA
- 99,9% uptime — Spolehlivost
- DDoS ochrana — Zahrnuto
- Bezplatná migrace — Pomůžeme
- Private Cloud podpora — Proxmox, VMware, OpenStack
💬 Nejste si jisti kterou variantu potřebujete?
💬 Napište nám a se vším pomůžeme!
Často kladené otázky
- Jak poznat že server nezvládá zátěž?
-
Hlavní známky: pomalé načítání stránek, CPU stabilně nad 70–80 %, rostoucí čas odezvy databáze, časté chyby 502/504. Pokud caching nepomáhá — čas přehodnotit konfiguraci nebo škálovat.
- Stačí VPS pro high-traffic web?
-
Pro většinu středních webů VPS s 8–16 GB RAM a NVMe stačí. Ale pokud provoz stále roste a vidíte Steal Time nebo nestabilní TTFB — stojí za to přejít na Dedicated.
- Potřebuji CDN když je publikum v jedné zemi?
-
Ano. CDN snižuje latenci, odlehčuje hlavní server, poskytuje DDoS ochranu a caching statiky. I pro lokální publikum to dává 10–15% zlepšení.
- Jak často přehodnocovat konfiguraci serveru?
-
Doporučujeme kontrolovat každých 6 měsíců nebo po výrazném růstu provozu. Aktualizace PHP, MySQL nebo Nginx mohou výrazně zlepšit výkon.
- Jaký nástroj pro load testing je nejlepší?
-
k6 — doporučujeme pro většinu případů. Scénáře v JavaScriptu, dobré reporty, snadná integrace. Pro jednoduchou kontrolu propustnosti — wrk. Pro složité scénáře chování — Locust.