Přejít k obsahu
Pošta Kabinet Vybrat tarif

Pomalý web nebo chyby 5xx: diagnostika na sdíleném hostingu

Pomalý web nebo chyby 5xx: diagnostika na sdíleném hostingu

Když je web na sdíleném hostingu pomalý nebo vrací chyby 5xx, nejdřív měřte a potom čtěte logy: TTFB přes curl pro stránku a pro statický soubor, přesný chybový kód, chybový log, limity prostředků a nakonec databázi, externí služby a přístupový log. Toto pořadí vede od nejlevnějších kontrol k nejnáročnějším. I když příčinu sami nenajdete, budete mít přesně ta data, která potřebuje podpora.

Přehled: příznak, kontrola, řešení

Příznak Co zkontrolovat Co udělat
Pomalé jsou stránky i statické soubory curl na stránku a na robots.txt, graf prostředků v panelu Napsat podpoře s výstupem curl, vyjasnit překročení limitů
Statický soubor rychlý, stránky s TTFB nad 1,8 s Chybový log, debug.log, dotazy do databáze Zapnout cache stránek, opravit pomalé pluginy a dotazy
TTFB pod 0,8 s, ale stránka se v prohlížeči načítá dlouho DevTools, karty Network a Performance Optimalizovat obrázky, JavaScript a CSS: to je frontend, ne server
Chyba 500 po aktualizaci Chybový log a debug.log Vrátit předchozí verzi pluginu nebo šablony, při hlášce “Allowed memory size” zkontrolovat memory_limit
Občasné 502 nebo 503 Historie limitů, přístupový log Najít boty a špičky, snížit počet souběžných procesů
504 u dlouhých operací “upstream timed out” v chybovém logu, délka externích volání Zkrátit úlohy, přesunout je do cronu, cachovat odpovědi API
508 Resource Limit Is Reached Historie limitu Entry Processes, přístupový log Zablokovat boty, zapnout cache a teprve potom zvažovat vyšší tarif
Zpomalení každý den ve stejnou dobu Plán cronu, záloh, importů, newsletterů Přesunout náročné úlohy na noc nebo je rozdělit
Infografika: pořadí diagnostiky pomalého webu na sdíleném hostingu v 6 krocích

Krok 1: změřte TTFB přes curl, ne podle pocitu

Podle příručky Googlu na web.dev zahrnuje TTFB (Time to First Byte) přesměrování, DNS dotaz, navázání spojení, vyjednání TLS a čekání na první bajt odpovědi. Příručka považuje 0,8 sekundy a méně za dobrou hodnotu a více než 1,8 sekundy za špatnou. Měřte několikrát po sobě:

for i in 1 2 3 4 5; do
  curl -s -o /dev/null -w 'dns %{time_namelookup}  connect %{time_connect}  tls %{time_appconnect}  ttfb %{time_starttransfer}  total %{time_total}  code %{http_code}\n' https://example.com/
done

Pole jsou proměnné write-out nástroje curl: time_namelookup (DNS), time_connect (TCP spojení), time_appconnect (TLS handshake), time_starttransfer (první bajt včetně času, který server potřebuje na vytvoření odpovědi) a time_total. Potom změřte statický soubor, který PHP nezpracovává:

curl -s -o /dev/null -w 'ttfb %{time_starttransfer}  code %{http_code}\n' https://example.com/robots.txt
  • Už dns nebo connect jsou vysoké: problém je v DNS nebo v síti, ne v PHP. Měření zopakujte z jiné sítě.
  • Statický soubor rychlý, stránka pomalá: webový server odpovídá rychle a čas se ztrácí v PHP a databázi. Pokračujte kroky 3 až 5.
  • Obojí pomalé: server nebo jeho síť jsou přetížené, případně váš účet naráží na limity. Pokračujte krokem 4 a podporou.
  • TTFB dobré, stránka přesto pomalá: čas spotřebuje frontend. Cache, kompresi a nastavení PHP popisuje náš článek o konfiguraci serveru pro rychlost webu.

Pokud je TTFB v pořádku a pomalu se stahují hlavně velké soubory, příčinou může být omezení rychlosti přenosu ze strany hostingu, které ověříte měřením rychlosti stahování v curl v různých denních dobách.

Měřte z regionu, kde jsou vaši návštěvníci, a bez přihlášení: mnoho CMS přihlášeným uživatelům neposílá stránky z cache.

Krok 2: co prozradí chybový kód

Zapište si přesný kód a čas. Definice vycházejí z RFC 9110 a MDN, typické příčiny se týkají sdíleného hostingu.

Kód Význam Typická příčina na sdíleném hostingu Více
500 Internal Server Error Neočekávaný stav serveru, obecný souhrnný kód Fatální chyba PHP, vyčerpaný memory_limit, chybný .htaccess, špatná oprávnění souborů Kritická chyba WordPressu
502 Bad Gateway Proxy nebo brána dostala od nadřazeného serveru neplatnou odpověď Proces PHP-FPM spadl nebo je nedostupný Rozdíly v článku o chybě 503 (další řádek)
503 Service Unavailable Server je dočasně přetížený nebo v údržbě Dosažený limit procesů, plný pool PHP-FPM, režim údržby Oprava chyby 503
504 Gateway Timeout Brána nedostala odpověď včas Dlouhý PHP skript, pomalý dotaz, čekání na externí API Oprava chyby 504
508 Ve standardu HTTP Loop Detected (WebDAV, RFC 5842); na serverech s CloudLinuxem stránka “Resource Limit Is Reached” Dosažený limit souběžných Entry Processes (EP): boti, mnoho pomalých požadavků Krok 4 níže
“Error establishing a database connection” Nejde o HTTP kód, ale o hlášku WordPressu Chybné přihlašovací údaje, nedostupný databázový server, limit spojení Chyba připojení k databázi

Krok 3: přečtěte chybový log a chyby PHP

V ovládacím panelu otevřete logy domény a přepněte na chybové logy; panely tuto sekci nazývají například “Error Logs” nebo “Logs”. S přístupem přes SSH stačí dva příkazy (cestu uvidíte v panelu nebo vám ji sdělí podpora):

tail -n 100 /path/to/error.log
grep -i -E "fatal|memory|timed out|max_children" /path/to/error.log | tail -n 20

Časté záznamy a jejich význam:

  • Allowed memory size of ... bytes exhausted: skript překročil memory_limit. Obvykle jde o plugin nebo velký import.
  • Maximum execution time of 30 seconds exceeded: skript běží déle, než dovoluje max_execution_time.
  • upstream timed out (Nginx): webový server čekal na PHP příliš dlouho, typický zdroj chyby 504.
  • server reached pm.max_children (PHP-FPM, pokud hostitel tento log zpřístupňuje): všechny procesy PHP jsou obsazené, požadavky čekají nebo končí chybou 502 či 503.

Ve WordPressu zapněte zápis chyb v souboru wp-config.php, aniž byste je ukazovali návštěvníkům:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

Podle dokumentace WordPressu se záznam pak ukládá do wp-content/debug.log. Po diagnostice konstanty vypněte a soubor smažte: leží ve veřejné složce. Pro samotné PHP doporučuje manuál PHP na produkčních serverech display_errors = Off a log_errors = On.

Pokud se chyby objevily hned po aktualizaci, zkontrolujte v panelu, jaká verze PHP je pro doménu zvolená a zda jsou zapnutá rozšíření, která web potřebuje. Chyby paměti a času běhu závisí na platných limitech PHP: dočasný soubor s phpinfo() ukáže hodnoty, se kterými pracuje webový server (hned ho smažte), kdežto php -i přes SSH ukáže nastavení příkazové řádky, které se může lišit:

php -i | grep -E "memory_limit|max_execution_time|upload_max_filesize|post_max_size"

Podle manuálu PHP jsou výchozí hodnoty memory_limit 128M, max_execution_time 30 sekund (v příkazové řádce 0), upload_max_filesize 2M a post_max_size 8M; php.ini vašeho hostitele může nastavit jiné. Pro nahrávání velkých souborů musí být post_max_size větší než upload_max_filesize.

Krok 4: zkontrolujte limity prostředků

Na sdíleném hostingu sdílí jeden server mnoho účtů, proto má každý účet limity. Na serverech s CloudLinuxem jsou to podle dokumentace SPEED (CPU), PMEM (fyzická paměť), IO, IOPS, EP (souběžné Entry Processes) a NPROC (procesy). Při překročení EP uvidí návštěvník chybu 508; při vyčerpání paměti nebo počtu procesů chybu 500 nebo 503. Jiné platformy omezují prostředky jinak: zeptejte se poskytovatele, jaké limity platí a kde uvidíte jejich historii.

Rozhodující je časové srovnání: kryjí se zpomalení se špičkami v grafu prostředků? Běží v tu dobu úlohy cronu, zálohy, importy nebo newslettery? Jak tyto hodnoty sledovat trvale a nastavit upozornění, popisuje náš návod k monitoringu serveru.

Krok 5: pomalé dotazy a externí služby

Slow query log v MySQL je ve výchozím stavu vypnutý, práh long_query_time je podle manuálu MySQL 8.4 10 sekund a na sdíleném hostingu obvykle chybí oprávnění zapnout ho globálně. Místo toho:

  • SHOW PROCESSLIST v phpMyAdminu nebo v klientovi MySQL: bez oprávnění PROCESS vidíte jen svá vlastní spojení, což pro váš web stačí. Podezřelé jsou dotazy, které několik sekund visí ve stavu “Sending data” nebo “Locked”.
  • Plugin Query Monitor ukazuje ve WordPressu pomalé, duplicitní a chybné dotazy, chyby PHP a volání HTTP API s jejich délkou.
  • Konstanta SAVEQUERIES ukládá všechny dotazy do $wpdb->queries. Zpomaluje web, proto ji zapínejte jen krátce.

Indexy, čištění tabulek a cache dotazů rozebírá náš článek o optimalizaci databáze na hostingu.

Externí služby často brzdí nenápadně: platební brány, kurzy měn, ověřování licencí, sociální feedy. Když PHP čeká na cizí API, TTFB roste, i když váš server nic nedělá. HTTP API WordPressu čeká ve výchozím stavu až 5 sekund na každý požadavek, takže několik pomalých volání se sčítá. Řešení: cachovat odpovědi, přesunout volání do cronu, odstranit pluginy se zbytečnými vzdálenými požadavky.

Krok 6: špičky provozu a boti v přístupovém logu

Přístupový log ukazuje, kdo zátěž vytváří. Pro obvyklý formát combined:

awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -20
awk '{print $7}' access.log | sort | uniq -c | sort -rn | head -20
awk '{print substr($4,2,17)}' access.log | sort | uniq -c | sort -rn | head
awk -F'"' '{print $6}' access.log | sort | uniq -c | sort -rn | head
awk '$9 ~ /^5/ {print $9}' access.log | sort | uniq -c
  • Řádky 1 a 2: nejaktivnější IP adresy a nejčastěji požadované URL.
  • Řádek 3: požadavky za minutu, tedy špičky.
  • Řádek 4: user agenty, tedy jací boti přicházejí.
  • Řádek 5: odpovědi 5xx podle kódu.

Varovné signály: několik IP adres nebo jediný user agent tvoří většinu požadavků; mnoho přístupů na wp-login.php, xmlrpc.php, vyhledávání nebo URL filtrů s parametry, které obcházejí cache. Zda je bot opravdu Googlebot, ověříte podle návodu Googlu dvojím DNS dotazem: název musí končit na googlebot.com, google.com nebo googleusercontent.com a ukazovat zpět na stejnou IP adresu.

host 66.249.66.1
host crawl-66-249-66-1.googlebot.com

Agresivní boty zablokujte v panelu nebo v souboru .htaccess. Omezování požadavků bez falešných poplachů popisuje článek o chybě 503. Pokud je nápor skutečný, třeba po kampani, pomůže cache stránek, a když se limity i tak trvale dosahují, vyšší tarif.

Optimalizovat, nebo změnit tarif?

Nejdřív optimalizujte, pokud jsou prostředky volné a web je přesto pomalý, pokud logy ukazují chyby pluginů nebo dotazů, nebo pokud je TTFB dobré a brzdí jen frontend. Vyšší tarif má smysl, když se limity i po optimalizaci pravidelně dosahují. U RichHost začínají tarify sdíleného hostingu na A3 za 8 USD a končí na A50 za 65 USD měsíčně, všechny s NVMe disky a vlastním ovládacím panelem s asistentem AI; podrobnosti najdete na stránce tarify hostingu. Před každou změnou a po ní porovnejte stejná měření curl.

Co poslat podpoře

  • Dotčenou URL a přesný čas včetně časového pásma.
  • Chybový kód a text chybové stránky.
  • Výstup curl z pěti měření pro stránku a statický soubor a svou veřejnou IP adresu.
  • Příslušné řádky z chybového logu nebo debug.log.
  • Co se v poslední době změnilo: aktualizace, nové pluginy, DNS, kampaně.
  • Co jste už zkusili, a konkrétní otázku: jaký limit byl dosažen, kdy a kterým procesem?

Jak jsme ověřovali. Dne 30.10.2026 jsme ověřili hranice TTFB v příručce web.dev od Googlu, proměnné write-out nástroje curl, význam kódů 500 až 504 v RFC 9110 a na MDN, kód 508 v RFC 5842 a v dokumentaci CloudLinuxu k limitům LVE, zaznamenávání chyb v manuálu PHP, ladění a výchozí časový limit HTTP API v dokumentaci WordPressu, slow query log a SHOW PROCESSLIST v manuálu MySQL 8.4, ověření Googlebota v Google Search Central a popis pluginu Query Monitor na wordpress.org. Příkazy curl a awk jsme otestovali 31.10.2026 v curl 8.5.0 na Linuxu s ukázkovým logem. Článek neobsahuje měření serverů RichHost.

Časté otázky

Jaké TTFB je normální?

Podle web.dev je 0,8 sekundy a méně dobré, víc než 1,8 sekundy špatné. Měřte několikrát, bez přihlášení a z regionu vašich návštěvníků.

Proč je web u mě rychlý a u zákazníků pomalý?

Možné důvody: dostáváte verzi z cache, zákazníci jsou dál od serveru nebo mají pomalý DNS resolver. Spusťte příkaz curl z jiné sítě a porovnejte dns, connect a ttfb.

Je chyba 508 totéž co 503?

Obě ukazují na přetížení. Chybu 508 “Resource Limit Is Reached” zobrazují servery s CloudLinuxem, když je dosažen limit souběžných Entry Processes. Chyba 503 je širší: přetížení, plný pool procesů nebo údržba.

Můžu na sdíleném hostingu zapnout slow query log?

Obvykle ne, potřebujete globální oprávnění na serveru. Použijte Query Monitor nebo SHOW PROCESSLIST, případně požádejte podporu o výpisy pro svou databázi.

Více k tématu

Všechny články
CDN pro web: kdy se vyplatí a kdy ne
Řešení problémů s hostingem05.09.2026

CDN pro web: kdy se vyplatí a kdy ne

Kdy CDN web opravdu zrychlí a kdy nepomůže: výchozí cachování u Cloudflare, bunny.net, Fastly a CloudFront, ceny, způsob měření a typické chyby.

Limit inodů na hostingu: disk volný, ale soubory nejdou vytvořit
Řešení problémů s hostingem27.07.2026

Limit inodů na hostingu: disk volný, ale soubory nejdou vytvořit

Na disku je místo, ale nové soubory nevzniknou: co je inode, jaké chyby ukazuje WordPress, kolik inodů zabírá cache, session, pošta a…

Logy serveru na hostingu: jak číst access log a error log
Návody a tutoriály k hostingu02.06.2026

Logy serveru na hostingu: jak číst access log a error log

Kde najdete logy webu na hostingu, čím se liší access log od error logu, a ověřené příkazy: nejaktivnější IP, 5xx v čase,…