Chyba 503: Service Temporarily Unavailable

  PHP, Webhosting

V tomto článku se dočtete:

Co je Chyba 503

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.

Příčiny Chyby 503

Každý webhosting má na našem serveru rezervováno až 7 PHP procesů (10 u balíčku Extra), které mohou běžet zároveň. To znamená, že v jeden okamžik může procesor zpracovávat nanejvýš 7 či 10 PHP požadavků. V tomto ohledu rozhoduje časová náročnost Vašich skriptů. Ty 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í, jsou odmítnuty s Chybou 503.

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

Nejčastější příčiny Chyby 503 a jejich možná řešení

Nejčastějšími příčinami Chyby 503 jsou:

  • 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ářů.
      
  • Útok na administraci redakčního systému: Velké množství pokusů o prolomení administrátorského hesla roboty zatěžuje aplikace a obsazuje PHP procesy. Problém můžete začít řešit důkladným prozkoumáním accesslogu.

Chyba 503 tedy vůbec nemusí souviset s aktuální návštěvností nebo změnami na webu. Častěji 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.

Č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.