jak provádět distribuované testování v JMeter

pokud máte web elektronického obchodování (nebo jakýkoli web), není neobvyklé, že byste očekávali vyšší úroveň provozu v určitých dnech, například černý pátek. V takových chvílích musíme posunout naše zátěžové testy na další úroveň a simulovat větší počet souběžných uživatelů. Pokud provádíme naše zátěžové testy lokálně s Apache JMeter™, existují určitá omezení počtu uživatelů, které můžete spustit, i když má váš počítač dostatek CPU a paměti.

jak můžeme vytvořit scénář s více než 800 souběžnými uživateli používajícími JMeter? Jednou z odpovědí je spuštění JMeter v distribuovaném režimu. Pro ty z vás, kteří o tom nikdy neslyšeli, je zde stručné vysvětlení.

když mluvíme o distribuci JMeter, odkazujeme na architekturu Master-Slave, kde JMeter používá Java RMI k interakci s objekty v distribuované síti. Můžete to vidět na obrázku níže.

distribuované testování umožňuje mít lokální JMeter (master), který zpracovává provedení testu, spolu s několika vzdálenými instancemi JMeter (slave), které odešlou požadavek na náš cílový server.

ale než budete moci spustit JMeter distribuovaným způsobem, musíte provést několik jednoduchých kroků.

nejprve musíme mít více počítačů.

pak musíme spustit server JMeter na každém slave systému, který máme. Za tímto účelem musíme spustit server jmeter.bat (jmeter-server pro uživatele Unixu), který je umístěn v jmeter/bin. Jakmile to spustíme, měli bychom vidět něco takového:

poté stejnou cestou, ale v hlavním systému, vyhledejte jmeter.vlastnosti fil. Upravte tento soubor a přidejte IP adresy všech slave systémů, které by měly být zapojeny do vlastnosti remote_hosts. Ujistěte se, že systémy master a slave jsou umístěny ve stejné podsíti.

je velmi důležité si uvědomit, že všechny hodnoty musí být odděleny čárkami (v tomto příkladu používáme pouze jeden slave systém, jen aby to bylo jednoduché).

jakmile jsou všechny tyto kroky provedeny, můžeme spustit JMeter a provést testy, které potřebujeme. V tomto případě se chystáme spustit JMeter pomocí režimu GUI, takže můžeme mít lepší představu o tom, jak to funguje. Pro účely testování se však důrazně doporučuje režim bez GUI.

počet uživatelů, ramp up a iterací by měl být nakonfigurován ve skupině vláken master systems jako obvykle. Při spuštění testu budou tyto podmínky replikovány na každém slave systému.

po spuštění JMeter a načtení našeho testu máme dvě možnosti. Jeden, nakonfigurovaný prostřednictvím hlavního systému, je pomocí vzdáleného spuštění Run->a poté vyberte podřízený systém, kde chceme spustit. Druhý, nakonfigurovaný také prostřednictvím hlavního systému, je Run – >Remote Start All Pro spuštění testu na všech dostupných slave systémech.

(jak jsme nastavili pouze jeden slave systém, neexistuje žádný rozdíl mezi dvěma možnostmi v tomto příkladu).

zde máme jednoduchý scénář, kde můžeme vyhledávat a prohlížet článek na webu elektronického obchodování:

jak vidíte, přidali jsme posluchače stromu výsledků zobrazení, abychom mohli zkontrolovat, zda byl test proveden správně nebo ne. Když spustíme test na dálku, budeme moci lokálně vidět výsledek testu na posluchači stromu výsledků zobrazení, jak jsem již zmínil,ale v podřízených systémech můžeme sledovat pouze čas začátku a čas konce testu.

Místně:

Vzdáleně:

v zákulisí každý slave systém provádí zátěžové testy s podmínkami, které jsme nastavili v hlavním systému. Tímto způsobem dosahujeme vyššího počtu souběžných uživatelů a tím i vyššího zatížení našeho cílového serveru.

pokud tedy chceme zatížení skutečně distribuovat, musíme to udělat ručně. Např. : pokud chceme oslovit 10 000 souběžných uživatelů a máme 10 slave systémů, náš testovací plán musí mít 1000 uživatelů, takže nakonec máme celkem 10 000.

další zajímavou věcí, kterou můžeme udělat, je přidat logiku do našeho testu přidáním ovladače If. Regulátor If nám umožňuje vybrat konkrétní tok, který chceme provést, v závislosti na systému, který provádí test. Ao, různé slave systémy by byly spuštěny různé části testu.

například pokud přidáme parametr při spuštění serveru jmeter na slave systémech (./jmeter-server-Jparam=1) do if řadiče můžeme umístit podmínku jako ${__javaScript (${param}==1)}, takže můžeme provádět konkrétní požadavky v závislosti na slave systému.

to je ono! Úspěšně jsme provedli test přes distribuovaný systém JMeter. To nemusí vypadat příliš složitě, protože jsme se rozhodli použít pouze jeden slave systém. Ale pokud potřebujete simulovat 25 000 souběžných uživatelů, náklady na údržbu všech těchto systémů jsou obrovské. Může existovat možné řešení problémů s údržbou, a to je připojit veškerou architekturu, kterou jsme viděli na kontejnery Docker (příklad můžete vidět zde).

to však stále nebude dost dobré, pokud je naším cílem pravidelně provádět zátěžové testy. Nainstalovali jsme veškerou distribuovanou architekturu do jednoho počítače, takže spotřebováváme značné množství zdrojů. Koncept distribuce JMeter přes Docker má větší smysl, pokud máme možnost eskalovat počet kontejnerů na vyžádání, jako ve službě cloud computing.

dalším problémem při spuštění JMeter v distribuovaném režimu je, jak zacházet se soubory CSV, když máte parametrizovaná data ve svých testech. Je to proto, že musíme mít oddělené soubory, a pokud je musíme aktualizovat, musíme jít do každého slave systému a provést úpravy.

k vyřešení všech těchto omezení a nepříjemností můžeme použít BlazeMeter, který nám poskytuje snadný způsob, jak zvládnout naše zátěžové testy. Vše, co musíme udělat, nahrát náš soubor JMX na BlazeMeter. Můžeme také nahrát konsolidovaný soubor CSV se všemi potřebnými daty a BlazeMeter se postará o jeho rozdělení v závislosti na množství motorů, které jsme nastavili.

na BlazeMeter můžeme nastavit počet uživatelů nebo kombinaci motorů (slave systémy)a vláken, které chceme použít pro naše testy. Můžeme také nakonfigurovat další hodnoty, jako je více umístění.

výsledky testů:

to je ono! Nyní jste viděli několik řešení pro běh zátěžových testů ve velkém měřítku, doporučuji vám vytvořit si vlastní zkušenosti a rozhodnout se, která možnost vám poskytne větší výhody.

Zjistěte více o tom, jak používat JMeter z naší bezplatné Akademie JMeter.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.