hogyan végezzünk elosztott tesztelést a JMeter-ben

ha van e-kereskedelmi webhelye (vagy bármilyen webhely, ami azt illeti), nem ritka, hogy bizonyos napokon magasabb szintű forgalomra számíthat, mint például a fekete péntek. Az ilyen pillanatokban a terhelési tesztjeinket a következő szintre kell emelnünk, és nagyobb számú egyidejű felhasználót kell szimulálnunk. Ha helyileg futtatjuk a terhelési tesztjeinket az Apache JMeter xhamsterrel, bizonyos korlátozások vannak a futtatható felhasználók számára, még akkor is, ha a számítógép elég CPU-val és memóriával rendelkezik.

hogyan hozhatunk létre egy forgatókönyvet több mint 800 egyidejű felhasználóval a JMeter használatával? Az egyik válasz fut JMeter elosztott módban. Azok számára, akik még soha nem hallottak róla, itt van egy rövid magyarázat.

amikor a JMeter terjesztéséről beszélünk, egy Master-Slave architektúrára utalunk, ahol a JMeter Java RMI-t használ az elosztott hálózat objektumaival való interakcióhoz. Ezt az alábbi képen láthatja.

az elosztott tesztelés lehetővé teszi egy helyi JMeter (master) használatát, amely kezeli a teszt végrehajtását, valamint több távoli JMeter példányt (slave), amelyek elküldik a kérést a célszerverünknek.

de mielőtt képes futtatni JMeter elosztott módon, van egy pár egyszerű lépést kell végrehajtania.

először is több számítógépre van szükségünk.

akkor meg kell, hogy a JMeter szerver fut minden slave rendszer, hogy van. Erre a célra a jmeter-szervert kell végrehajtanunk.bat (JMeter-szerver Unix felhasználók számára), amely a jmeter/bin-ben található. Ha egyszer futunk, valami ilyesmit kell látnunk:

ezután ugyanazon az úton, de a master rendszerben keresse meg a jmetert.tulajdonságok fil. Szerkessze ezt a fájlt, és adja hozzá a remote_hosts tulajdonságban részt vevő összes slave rendszer IP-címét. Győződjön meg arról, hogy a master és a slave rendszerek ugyanabban az alhálózatban vannak.

nagyon fontos megjegyezni, hogy az összes értéket vesszővel kell elválasztani (ebben a példában csak egy slave rendszert használunk, csak azért, hogy egyszerű legyen).

miután ezeket a lépéseket végrehajtottuk, elindíthatjuk a JMeter-t és végrehajthatjuk a szükséges teszteket. Ebben az esetben a JMeter programot GUI módban fogjuk végrehajtani, így jobb ötletünk lehet arról, hogyan működik. A nem GUI mód azonban erősen ajánlott tesztelési célokra.

a felhasználók számát, a rámpát és az iterációkat a szokásos módon a master systems Szálcsoportban kell beállítani. A teszt futtatásakor ezek a feltételek minden slave rendszeren megismétlődnek.

a JMeter indítása és a teszt betöltése után két lehetőségünk van. Az egyik, a master rendszeren keresztül konfigurálva, a Run – > Távoli indítás, majd válassza ki a slave rendszert, ahol végre akarjuk hajtani. A második, szintén a master rendszeren keresztül konfigurálva fut->Remote Start All, hogy elindítsa a tesztet az összes elérhető slave rendszeren.

(mivel csak egy slave rendszert állítunk be, ebben a példában nincs különbség a két lehetőség között).

itt van egy egyszerű forgatókönyv, ahol Kereshetünk és megtekinthetünk egy cikket egy e-kereskedelmi webhelyen:

mint látható, van hozzá egy nézet eredmények fa figyelő, így tudjuk ellenőrizni, hogy a teszt helyesen hajtották végre, vagy sem. Ha távolról futtatunk egy tesztet, akkor helyileg láthatjuk a teszt eredményét a View Results fafigyelőn, ahogy már említettem, de a slave rendszerekben csak a teszt kezdési és befejezési idejét tudjuk megfigyelni.

Helyben:

Távolról:

a színfalak mögött minden slave rendszer végrehajtja a terhelési teszteket a master rendszerben beállított feltételekkel. Így nagyobb számú egyidejű felhasználót érünk el, és ezáltal nagyobb terhelést érünk el a célszerverünkre.

ezért, ha valóban el akarjuk osztani a terhelést, manuálisan kell megtennünk. Például: ha 10 000 egyidejű felhasználót akarunk elérni, és 10 slave rendszerünk van, akkor a teszttervünknek 1000 felhasználóval kell rendelkeznie, így végül 10 000 lesz.

egy másik érdekes dolog, amit tehetünk, hogy logikát adunk a teszthez egy If vezérlő hozzáadásával. Az If vezérlő lehetővé teszi számunkra, hogy kiválasszunk egy adott folyamatot, amelyet végrehajtani akarunk, a tesztet végrehajtó rendszertől függően. Ao, a különböző slave rendszerek a teszt különböző részeit futtatnák.

például, ha hozzáadunk egy paramétert a JMeter-server futtatásakor a slave rendszereken (./jmeter-server-Jparam=1) elhelyezhetünk egy olyan feltételt, mint ${__javaScript(${param}==1)} az If vezérlőn belül, így a slave rendszertől függően végrehajthatunk bizonyos kéréseket.

ez az! Sikeresen végrehajtottunk egy tesztet egy JMeter elosztott rendszeren keresztül. Ez nem tűnik túl bonyolultnak, mert úgy döntöttünk, hogy csak egy slave rendszert használunk. De ha 25 000 egyidejű felhasználót kell szimulálnia, akkor ezeknek a rendszereknek a fenntartásának költsége hatalmas. Lehetséges megoldás lehet a karbantartási problémákra, vagyis az összes architektúra felszerelése, amelyet a Docker konténereken láttunk (itt láthat egy példát).

ez azonban még mindig nem lesz elég jó, ha célunk a terhelési tesztek rendszeres futtatása. Az összes elosztott architektúrát egy számítógépbe szereltük, így jelentős mennyiségű erőforrást fogyasztunk. A JMeter Docker-en keresztüli terjesztésének koncepciója értelmesebb, ha lehetőségünk van igény szerint növelni a konténerek számát, például egy felhőalapú számítástechnikai szolgáltatásban.

a JMeter elosztott módban történő futtatásakor egy másik nehézség a CSV fájlok kezelése, ha paraméterezett adatok vannak a tesztekben. Ez azért van, mert külön fájlokra van szükségünk, és ha frissíteni kell őket, akkor minden slave rendszerhez el kell mennünk, és el kell végeznünk a módosításokat.

mindezen korlátozások és kellemetlenségek megoldására használhatjuk a BlazeMeter-t, amely egyszerű módot kínál a terhelési tesztek kezelésére. Mindössze annyit kell tennie, hogy töltse fel a JMX fájlt BlazeMeter. Feltölthetünk egy konszolidált CSV fájlt is az összes szükséges adattal, a BlazeMeter pedig gondoskodik a felosztásról, a beállított motorok mennyiségétől függően.

a BlazeMeter-en beállíthatjuk a felhasználók számát vagy a motorok (slave rendszerek) és a szálak kombinációját, amelyeket a tesztjeinkhez alkalmazni akarunk. További értékeket is konfigurálhatunk, például több helyet.

vizsgálati eredmények:

ez az! Most már látott néhány megoldást a terheléstesztek nagy léptékű futtatására, az én ajánlásom az Ön számára, hogy hozzon létre saját élményt, és döntsön arról, hogy melyik opció nyújt nagyobb előnyöket.

Tudjon meg többet a JMeter használatáról az ingyenes JMeter Akadémián.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.