Webhosting – Chyba 503: Service Temporarily Unavailable

  Webhosting, PHP

Chyba 503 se často objevuje nárazově. Chcete-li monitorovat web a dostávat informace o dostupnosti služby e-mailem nebo jinými kanály, zvažte použití služby WEDOS OnLine.

V tomto článku se dočtete:

Chyba 503: Service temporarily unavailable

Chybu 503 poznáte podle velkého nápisu Service Temporarily Unavailable v horní části stránky. Pod nadpisem najdete anglický popis chyby a odkaz na tento článek.

WEDOS Stránka s Chybou 503 Service temporarily unavailable
Stránka s Chybou 503 Service temporarily unavailable

S Chybou 503 Service Temporarily Unavailable se můžete setkat na kterémkoli webu, který ke svému fungování používá PHP či podobné technologie. Server běží na plné obrátky, ale přesto nereaguje na nové požadavky. Příčínou problémů bývá dosažení limitů některých parametrů webhostingu.

Řešení Chyby 503

Každý webhosting NoLimit má na našem serveru rezervováno až 25 PHP procesů (7 u LowCost, 30 u Extra), které mohou běžet zároveň. To znamená, že v jeden okamžik může procesor zpracovávat nanejvýš 25 (či počet dle rozšíření) PHP požadavků. Požadavky, které procesor nestíhá vlivem časové náročnosti odbavovat, se řadí do fronty a čekají, až se na ně dostane. Pokud se volného PHP procesu v daném čase (zvaném timeout) nedočkají, vrátí Chybu 503.

Za běžných okolností 25 PHP procesů stačí – máte-li správně optimalizované stránky, na tento problém nenarazíte. 

Ochrana před útoky

Běžnou příčinou Chyby 503 jsou útoky, nebo jiné formy zahlcení Vašeho webu požadavky, které vyčerpávají procesy a blokují skutečným uživatelům přístup na web. Chyba se v této situaci zpravidla objevuje nárazově, trvá jednotky až desítky minut.

Tento problém můžete zachytit nasazením logování podle návodu Webhosting – Logování, a to jak Accesslogu, tak Errorlogu.

  • V Accesslogu najdete výčet přístupů na Váš web, včetně konkrétních adres. Nesmyslné adresy nebo parametry (v adrese za znakem ?) jsou běžnou známkou útoku.
  • V Errorlogu najdete časy, během kterých došlo k výskytu Chyby 503. Pokud se tyto časy shodují se špičkami přístupů v Accesslogu způsobenými podezřelou aktivitou, byla chyba nejspíš způsobena útokem.

WEDOS momentálně intenzivně vyvíjí špičkovou ochranu před útoky – síť WEDOS Global. Pozorujete-li častý výskyt Chyby 503 vlivem útoků, zvažte nasazení této ochrany.

Optimalizace webu a databáze

Není-li web optimalizovaný, může k zahlcení často vést i běžná návštěvnost, nebo neúčinná práce s externími zdroji či databází. Chyba se objevuje nárazově, buď ve špičkách provozu, nebo během automatické údržby; trvá jednotky až desítky minut.

Mezi běžné příčiny Chyby 503 a jejich řešení patří:

  • Nesprávně optimalizovaná PHP aplikace: Aplikace neposílá své požadavky do procesoru efektivně. Používáte-li redakční systém, zjistěte, jestli umožňuje tzv. cachování. Pokud ano, zapněte jej. Výrazně tím zkrátíte dobu provádění skriptu, snížíte počet SQL dotazů do databáze a urychlíte Vaše stránky. Používáte-li WordPress, přečtěte si článek o cachování ve WordPressu.
  • Velký počet záznamů v databázi: Aplikace zaznamenává do databáze přístupy návštěvníků či nějaké podobně rozsáhlé soubory dat. Zvažte, která data opravdu potřebujete, a přizpůsobte tomu buď aplikaci, nebo hosting.
  • Nevhodná konfigurace databáze: Aplikace má nevhodně nakonfigurovanédatabázové tabulky. PHP pak velmi dlouho čeká na výsledky SQL dotazů. Možnosti nápravy hledejte například v článku MySQL – optimalizace výkonu, indexy.
  • PHP aplikace se připojuje k nedostupnému externímu zdroji: Aplikace stahuje externí data, ale s cílovým serverem se není možné spojit, neodpovídá, či je přetížený. Setkáváte-li se s tímto problémem často, zvažte změnu zdroje externích dat.
  • Skript volaný cronem běží příliš dlouho: Pokud máte větší množství cronů, nebo crony běží dlouho, mohou zablokovat PHP procesy dostupné pro Váš web. Zamyslete se nad tím, které crony aplikace skutečně potřebuje, jak často, a jak je můžete optimalizovat.
  • Stahování souborů zprostředkovaný přes PHP skript: Aplikace zprostředkovává stahování velkých souborů pomocí PHP skriptu, a tím obsazuje po celou dobu stahování PHP proces. Stahování souborů tedy raději řešte odkázáním nebo přesměrováním přímo na URL adresu souboru.
  • Velké množství souborů v nevhodné adresářové struktuře: Aplikace obsahuje v jednom adresáři více než řádově tisíce položek. Roztřiďte soubory do vhodných adresářů.

Chyba 503 tedy vůbec nemusí souviset s aktuální návštěvností nebo změnami na webu. Často narazíte na načítání nějakých dat z pomalého nebo nedostupného externího zdroje, či běh cronu, který dlouho něco načítá, aktualizuje, provádí údržbu a podobně. Také se může náhodně sejít větší množství složitých požadavků, zpravidla vyhledávání v obsáhlých databázích.

Nedaří-li se Vám najít způsob, jak web optimalizovat, můžete jeho požadavkům přizpůsobit výkon služby. Zvažte tyto možnosti:

  • Změna tarifu webhostingu: tarif webhostingu můžete navýšit z LowCost na NoLimit, nebo z NoLimit na Extra. Srovnání výkonu tarifů najdete na tomto odkazu. Návod na provedení změny tarifu najdete v článku Webhosting – Změna varianty.
  • Změna služby: Nestačí-li Vaší aplikaci výkon sdíleného webhostingu, ale nechcete přijít o správu v zákaznické administraci, zvažte přesun aplikace na službu WMS.
  • Oddělení aliasů a subdomén. Aliasy a subdomény webhostingu sdílejí výkon služby. Pokud provoz na jednom či více aliasech či subdoménách způsobuje Chybu 503, zvažte zřízení samostatného hostingu pro danou doménu či subdoménu.

Zaseknutý PHP proces

Vzácně může Chybu 503 způsobit také zaseknutí PHP procesu. Pokud Chybu 503 pozorujete soustavně několik desítek minut až hodin a nepomáhá ani vyčištění cache (například klávesovou zkratkou Ctrl+Shift+R), restartujte PHP na Vašem hostingu:

  1. Přihlaste se do zákaznické administrace.
  2. V horním menu vyberte Hostingové služby >> Webhosting.
  3. Vyberte webhosting, u kterého chcete PHP restartovat.
  4. V levém menu vyberte Konfigurace PHP.
  5. Změňte verzi PHP na jinou, pokud možno co nejbližší (např. PHP 7.4 -> 7.3, nebo 8.0 -> 8.1)
  6. Klikněte na tlačítko Upravit.
  7. Vyčkejte půl hodiny na proběhnutí změny verze PHP. Poté stejným způsobem vraťte původní verzi zpět.

Pokud chyba 503 přetrvává i po takovémto restartu, pravděpodobně ji způsobuje jiná příčina, než zaseknutý proces.

WEDOS Změna verze PHP webhostingu v rámci resetu
Změna verze PHP webhostingu v rámci resetu

Často kladené dotazy

Otázka: Je Chyba 503 specifická pro servery WEDOS?
Odpověď: S chybou 503 se můžete setkat na libovolném webovém serveru. Když hledáte vhodný hosting pro svou aplikaci, seznamte se nejprve s jejími nároky, a tomu pak uzpůsobte vlastní poptávku. Kromě dostupného místa pro soubory a databázi věnujte pozornost parametrům RAM a CPU. Počítejte s tím, že ruku v ruce s výkonem jde i cena služby.

Otázka: Odstavil jsem úplně celý web, ale pořád pozoruji Chybu 503, čím to je?
Odpověď: Zkuste vyčistit cache prohlížeče (například klávesovou zkratkou Ctrl+Shift+R). Pokud to nepomůže, zkuste restartovat PHP podle postupu v kapitole Zaseknutý PHP proces.

Děkujeme za zpětnou vazbu!