Locust: jak na zátěžové testy webu rychle a snadno

Při spuštění webu byste měli otestovat, jak zvládá zátěž spojenou s příchodem většího množství uživatelů. Tohle je zcela jiná metrika než rychlost načítání jako taková. Zátěžové testy dovede celá řada nástrojů. Rád bych vám představil bezplatný open source nástroj Locust, se kterým otestujete nejenom načítání stránek, ale i přihlašování a odesílání formulářů.
reklama

Ř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 - aplikace na load testing

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?

  1. 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.
  2. 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ů.
  3. 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.

Autor článku: Jan Polzer

Tvůrce webů z Brna se specializací na Drupal a Symfony. Obojí také školím spolu se základy SEO. Jsem Acquia Certified Developer a Site Builder a napsal jsem několik knih o Drupalu. Ve volných chvílích cestuji a podnikám výlety. Více se dozvíte na mém firemním webu.

reklama

Komentáře k článku

návštěvník

Děkuji za tip vypadá to hodně zajímavě, jen přemýšlím, jestli to spouští i Javascript?

Přidat komentář

Filtered HTML

  • Povolené HTML značky: <a href hreflang> <em> <strong> <cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <p> <br>
  • Řádky a odstavce se zalomí automaticky.
  • Web page addresses and email addresses turn into links automatically.

Odesláním komentáře souhlasíte s podmínkami Ochrany osobních údajů

reklama
Sledujte Maxiorla na Facebooku

Maxiorel na Facebooku

Poslední komentáře
reklama
Nové diskuze
reklama
Hosting pro Drupal a WordPress

Hledáte český webhosting vhodný nejenom pro redakční systém Drupal? Tak vyzkoušejte Webhosting C4 za 1200 Kč na rok s doménou v ceně, 20 GB prostoru a automatické navyšováním o 2 GB každý rok. Podrobnosti zde.

Knihy o Drupalu

Kniha Drupal 8 Kniha Drupal 7 333 tipů a triků pro Drupal
Více na KnihyPolzer.cz

@maxiorel na Twitteru

Maxiorel na Twitteru