Řekl bych, že jde v současné době o poměrně aktuální téma. Weby poliklinik, nemocnic nebo informační weby o nemoci čelí vyššímu náporu návštěvníků než jindy. Ale vezměme to obecně. Váš web může mít vyšší návštěvnost z různých důvodů.
Stačí spustit velmi úspěšnou PPC kampaň. Mít sezónní zboží nebo nabídku služeb. Mít v blogu článek týkající se nějakého tématu, které se stane aktuální. Nebo o nějakém místě, které najednou začne lidi zajímat.
Zkrátka důvodů, proč mít povědomí o tom, jakou nárazovou návštěvnost váš web utáhne, je celá řada. Zátěžové testy vám také řeknou, jestli náhodou ten skvělý hosting, kde web běhá s výborným hodnocením rychlosti načítání, nevracejí při větší zátěži zvýšený počet chyb 500 místo zobrazení webu.
Nástrojů na zátěžové testování webu je celá řada. Já jsem dost používal Apache Benchmark. Na příkazovém řádku napíšete ab následované parametry s počtem souběžných spojení, celkového počtu návštěvníků a adresou webu. Spustíte a počkáte na výsledek měření.
Avšak netuším, zda lze s pomocí ab otestovat i odesílání formulářů. A určitě pohodlně neotestujete celou sadu stránek v rámci jednoho webu.
Proto se mi líbí nástroj Locust. Tohle všechno umí a nabízí k tomu jednoduchou konfiguraci a uživatelsky přívětivé zobrazení výsledků.
Locust: open source měření zátěže webu v Pythonu
Co jsem slyšel od kolegů, Locust se řadě lidí líbí především díky snadné konfiguraci. Nemusíte popisovat nějaký rozsáhlý konfigurační soubor s parametry, ale stačí vám kousek skriptu v Pythonu. Jasně, ne každý Pythonem vládne. Ale zde je to tak jednoduché, že nad základy ani nemusíte přemýšlet.
Kdybych měl vyzdvihnout základní vlastnosti provádění load testu přes Locust:
- Jednoduchá konfigurace v Pythonu
- Můžete mít připravenu celou řadu skriptů
- Specifikujete více stránek na webu a jejich poměr v celkové návštěvnosti
- Můžete odesílat formuláře – přihlašování i nákupní košíky
- Výsledky vidíte v přehledné tabulce a grafech ve webovém prohlížeči
Podle informací na webu aplikace Locust používá například Microsoft, Mozilla, Zalando nebo Intel. To je pěkné doporučení.
Jak to funguje?
- Do Python skriptu definujete seznam stránek, jejich poměr v celkovém balíku návštěvnosti a případná odesílání formulářů. Přidáte prodlevu pro nečinnost uživatele, než načte další stránku, a to intervalem od do.
- Spustíte Locust, který vytvoří lokální URL adresu. Otevřete ji v prohlížeči, zadáte adresu webu a počet návštěvníků.
- Potom jen sledujete průběh načítání webu, průměrnou rychlost servírování stránek, graf s ukazatelem vývoje hodnot v čase a přehled případných chyb při načítání.
Základní konfigurace load testu krok za krokem
Přestože má Locust hezky zpracovanou dokumentaci, určitě oceníte, když první zátěžový test vyzkoušíme spolu.
Po pravdě řečeno, více než nastavení Locustu mi dala zabrat jeho instalace. Potřebujete mít v systému Python a instalátor pip. Vše rozběhnete docela jednoduše na Macu i ve Windows. Horší je, pokud máte instalaci zaneřáděnou různými pokusy. Pak vám jednoduchý instalační příkaz pip install locustio nemusí proběhnout na první dobrou.
Připravte si nějaký editor se zvýrazňováním syntaxe, který umí Python. Není to tedy nezbytně nutné, ale uvidíte případné chyby a překlepy, kterých se dopustíte:
Výše uvedené platí jen pro opravdu jednoduchý web s několika stránkami, kde se toho moc nemění. Locust vám pomůže i ve složitějších případech, kdy je potřeba zkoumat odesílání formulářů.
Samozřejmě si můžete připravit více konfiguračních souborů i v jedné složce. Pokud chcete specifikovat, který z nich má Locust použít, zadáte příkaz pro jeho spuštění ve tvaru locust -f nazevsouboru.py.
Slíbená ukázka konfiguračního souboru:
from locust import HttpLocust, TaskSet, between def oznaceni_stranky(l): l.client.get("/adresa-stranky-bez-domeny") def oznaceni_jine_stranky(l): l.client.get("/adresa-jine-stranky") class UserBehavior(TaskSet): tasks = {oznaceni_stranky: 2, oznaceni_jine_stranky: 1} class WebsiteUser(HttpLocust): task_set = UserBehavior wait_time = between(5.0, 9.0)
Celá aplikace se hodí i pro zátěžové testování začleněné do CI. Testy lze spouštět i bez výstupu do webového rozhraní a samozřejmě integrovat v Dockeru. Více najdete v dokumentaci na webu locust.io.
Tvůrce webů z Brna se specializací na Drupal, WordPress a Symfony. Acquia Certified Developer & Site Builder. Autor několika knih o Drupalu.
Web Development Director v Lesensky.cz. Ve volných chvílích podnikám výlety na souši i po vodě. Více se dozvíte na polzer.cz a mém LinkedIn profilu.
Podobné články
Komentáře k článku
Podle tohoto ne https://github.com/locustio/locust/issues/187 Ale je to staré vlákno
Děkuji za tip vypadá to hodně zajímavě, jen přemýšlím, jestli to spouští i Javascript?