Web padá nebo je pomalý při náporu návštěvníků
Web spadne při kampani nebo výprodeji. Proč za to obvykle může jedna náročná stránka, ne počet lidí, a co udělat před příští akcí.
4 minuty čtení 6 kroků
Obsah návodu
Rozešlete newsletter, spustíte reklamu nebo vás zmíní v médiích, a přesně v tu chvíli web spadne. Zobrazí se „503 Service Unavailable“, „Chyba při navazování připojení k databázi“ nebo se stránka jen točí a nenačte. Ve chvíli, kdy máte nejvíc zákazníků, nemáte web. Příčinou zpravidla není počet návštěvníků, ale to, kolik práce každý z nich serveru dá.
Proč to není o počtu návštěvníků
Když stránka potřebuje k načtení 200 dotazů do databáze a půl sekundy výpočtů, pak deset návštěvníků za sekundu znamená pět sekund práce každou sekundu. Server nestíhá, fronta požadavků roste a po chvíli se všechno zastaví. Kdyby stejná stránka potřebovala 5 dotazů a 20 milisekund, zvládl by stejný server stovku návštěvníků za sekundu bez zaváhání. Rozdíl není v serveru, ale ve stránce.
Které stránky to obvykle způsobují
Skoro vždy je to jedna nebo dvě konkrétní stránky, ne celý web:
- Výpis produktů s filtrováním. Filtry podle barvy, velikosti a ceny, každá kombinace je jiný dotaz a žádný není uložený v cache.
- Košík a pokladna. Ty se z principu cachovat nedají, a když jsou napsané špatně, každý krok trvá sekundy.
- Vyhledávání na webu. Prohledávání celé databáze při každém stisknutí klávesy.
- Úvodní stránka s desítkami bloků typu „poslední“ a „nejprodávanější“, každý s vlastním dotazem.
Které adresy měly v době výpadku nejdelší odezvu, poznáte z error logu (hlášky o překročení doby běhu nebo paměti obsahují cestu ke skriptu) nebo ze statistik doplňku pro měření výkonu, například Query Monitor.
Co udělat před příští kampaní
- Zapněte cache pro všechno, co se cachovat dá: stránky produktů, kategorie, články, úvodní stránku. Návštěvník z reklamy dostane hotovou stránku a server ji nemusí skládat. To samo o sobě zvládne většinu kampaní. Postup najdete v návodu Jak zrychlit WordPress.
- Změřte, kolik web unese. Zátěžový test před kampaní vám řekne, při jakém počtu návštěvníků web začne zpomalovat. Je lepší to zjistit v úterý večer než v den akce.
- Zmenšete stránky: fotografie, skripty, vložená videa. Méně dat na návštěvníka je méně práce pro server i pro připojení.
- Ověřte si, že web nenaráží na limity webhostingu, a případně upravte nastavení v souboru .user.ini.
- Informujte předem podporu na podpora@datahost.cz o termínu a očekávané návštěvnosti. Podpora vám poradí, zda je současná služba pro očekávaný nápor vhodná.
- Připravte si náhradní stránku. Když web přesto spadne, ať lidé vidí „Máme nápor, zkuste to za pár minut nebo napište na …“ místo chybové hlášky serveru.
Co nedělat
- Neinstalujte v den akce nový doplněk na zrychlení. Neotestovaný doplněk v den, kdy máte nejvíc zákazníků, je hazard.
- Neaktualizujte v den akce WordPress, šablonu ani doplňky.
- Nenačítejte web opakovaně v naději, že se spraví. Fronta požadavků se tím nezkrátí, jen se návštěvníkům znovu zobrazí chyba.
- Nesahejte hned po silnějším serveru. Dvojnásobný výkon zvládne dvojnásobek návštěvníků, cache zvládne desetinásobek. Pořadí je jasné.
Kdy kontaktovat podporu
Napište na podpora@datahost.cz, když web padá i po zapnutí cache a zmenšení stránek, když se výpadky objevují i mimo kampaně, nebo když plánujete akci s výrazně vyšší návštěvností, než je obvyklé. Podpora ověří, zda výpadek souvisí se zatížením serveru nebo s limity vaší služby, a doporučí další postup. Pokud je příčina v konkrétním kódu doplňku nebo šablony, je potřeba změřit, co přesně na dané stránce trvá dlouho, a nechat to upravit vývojářem webu.
Do zprávy uveďte:
- doménu a přesnou chybu, kterou návštěvníci viděli,
- čas začátku a konce výpadku,
- odhad návštěvnosti v době výpadku (například z Google Analytics),
- adresy stránek, na které kampaň směřovala,
- jaký cache doplněk používáte a co jste před kampaní měnili.