cum se efectuează testarea distribuită în JMeter

dacă aveți un site de comerț electronic (sau orice site pentru care contează), nu este neobișnuit să vă așteptați la un nivel mai ridicat de trafic în anumite zile, cum ar fi Black Friday, de exemplu. În momente ca acestea, trebuie să ducem testele de încărcare la nivelul următor și să simulăm un număr mai mare de utilizatori concurenți. Dacă rulăm testele noastre de încărcare la nivel local cu Apache JMeter XV, există anumite limitări ale numărului de utilizatori pe care îi puteți rula, chiar dacă computerul dvs. are suficient procesor și memorie.

cum putem crea un scenariu cu mai mult de 800 de utilizatori simultani folosind JMeter? Unul dintre răspunsuri rulează JMeter în modul distribuit. Pentru aceia dintre voi care nu au auzit niciodată despre asta, iată o scurtă explicație.

când vorbim despre distribuirea JMeter, ne referim la o arhitectură Master-Slave în care JMeter folosește Java RMI pentru a interacționa cu obiectele dintr-o rețea distribuită. Puteți vedea acest lucru în imaginea de mai jos.

testarea distribuită permite să aveți un Jmeter local (master) care gestionează execuția testului, împreună cu mai multe instanțe Jmeter la distanță (sclavi) care vor trimite cererea către serverul nostru țintă.

dar înainte de a putea rula JMeter într-un mod distribuit, există câțiva pași simpli pe care trebuie să îi efectuați.

în primul rând, trebuie să avem mai multe computere.

atunci avem nevoie pentru a obține serverul JMeter rulează pe fiecare sistem slave pe care le avem. În acest scop, trebuie să executăm serverul jmeter.bat (Jmeter-server pentru utilizatorii Unix) care se află în jmeter/bin. Odată ce am rula ar trebui să vedem ceva de genul asta:

apoi, prin aceeași cale, dar în sistemul master, localizați jmetrul.proprietăți fil. Editați acest fișier și adăugați IP-urile tuturor sistemelor slave care ar trebui implicate în proprietatea remote_hosts. Asigurați-vă că sistemele master și slave sunt situate în aceeași subrețea.

este foarte important să ne amintim că toate valorile trebuie separate prin virgule (în acest exemplu folosim un singur sistem slave, doar pentru a-l menține simplu).

odată ce toate aceste etape sunt realizate, putem începe JMeter și executa testele de care avem nevoie. În acest caz, vom executa JMeter folosind modul GUI, astfel încât să putem avea o idee mai bună despre cum funcționează. Cu toate acestea, modul non-GUI este recomandat în scopuri de testare.

numărul de utilizatori, rampa în sus și iterații ar trebui să fie configurate în grupul de fire master systems ca de obicei. La rularea testului, aceste condiții vor fi reproduse pe fiecare sistem slave.

după pornirea JMeter și încărcarea testului nostru, avem două opțiuni. Unul, configurat prin sistemul master, este prin Run->pornire la distanță și apoi selectați sistemul slave unde dorim să executăm. Al doilea, configurat și prin sistemul master, este rulat->Remote Start All pentru a începe testul pe toate sistemele slave disponibile.

(așa cum am stabilit doar un sistem slave, nu există nici o diferență între cele două opțiuni în acest exemplu).

aici avem un scenariu simplu în care putem căuta și vizualiza un articol pe un site de comerț electronic:

după cum puteți vedea, am adăugat o vizualizare rezultate copac ascultător astfel încât să putem verifica dacă testul a fost executat corect sau nu. Când rulăm un test de la distanță, vom putea vedea local rezultatul testului pe ascultătorul arborelui de vizualizare a rezultatelor așa cum am menționat deja, dar în sistemele slave, putem observa doar ora de începere și ora de încheiere a testului.

Local:

De La Distanță:

în spatele scenei, fiecare sistem slave execută testele de sarcină cu condițiile pe care le-am stabilit în sistemul master. În acest fel, obținem un număr mai mare de utilizatori concurenți și, prin urmare, o încărcare mai mare pe serverul nostru țintă.

prin urmare, dacă dorim să distribuim cu adevărat sarcina, trebuie să o facem manual. De exemplu: dacă vrem să ajungem la 10.000 de utilizatori concurenți și avem 10 sisteme slave, planul nostru de testare trebuie să aibă 1000 de utilizatori, așa că ajungem să avem 10.000 în total.

un alt lucru interesant pe care îl putem face este să adăugăm logică testului nostru adăugând un controler If. Controlerul If ne permite să alegem un anumit flux pe care dorim să îl executăm, în funcție de sistemul care execută testul. Ao, diferite sisteme slave ar rula diferite părți ale testului.

de exemplu, dacă adăugăm un parametru atunci când rulează jmeter-server pe sistemele slave (./ jmeter-server-Jparam = 1) putem plasa o condiție ca ${__javaScript(${param}==1)} în cadrul controlerului If, astfel încât să putem executa anumite cereri în funcție de sistemul slave.

asta e! Am executat cu succes un test pe un sistem distribuit JMeter. Acest lucru poate să nu pară foarte complex, deoarece am ales să folosim un singur sistem slave. Dar dacă trebuie să simulați 25.000 de utilizatori concurenți, costul întreținerii tuturor acestor sisteme este imens. Este posibil să existe o posibilă soluție pentru problemele de întreținere și anume montarea întregii arhitecturi pe care am văzut-o peste containerele Docker (puteți vedea un exemplu aici).

cu toate acestea, acest lucru nu va fi suficient de bun dacă scopul nostru este de a rula periodic teste de sarcină. Am montat toată arhitectura distribuită într-un singur computer, așa că consumăm o cantitate considerabilă de resurse. Conceptul de distribuire a JMeter peste Docker are mai mult sens dacă avem posibilitatea de a escalada numărul de containere la cerere, ca într-un serviciu de cloud computing.

o altă dificultate atunci când rulați JMeter în modul distribuit este cum să gestionați fișierele CSV atunci când aveți date parametrizate în testele dvs. Acest lucru se datorează faptului că trebuie să avem fișiere separate și, dacă trebuie să le actualizăm, trebuie să mergem la fiecare sistem slave și să facem modificările.

pentru a rezolva toate aceste limitări și inconveniente, putem folosi BlazeMeter, care ne oferă o modalitate ușoară de a gestiona testele noastre de încărcare. Tot ce trebuie să facem încărcați fișierul nostru JMX la BlazeMeter. De asemenea, putem încărca un fișier CSV consolidat cu toate datele necesare, iar BlazeMeter se va ocupa de împărțirea acestuia, în funcție de cantitatea de motoare pe care am setat-o.

pe BlazeMeter putem seta cantitatea de utilizatori sau combinația de motoare (sisteme slave) și fire pe care dorim să le aplicăm testelor noastre. De asemenea, putem configura valori suplimentare, cum ar fi locații multiple.

rezultatele testelor:

asta e! Acum ați văzut câteva soluții pentru rularea testelor de sarcină pe scară largă, recomandarea mea pentru dvs. este să vă creați propria experiență și să luați o decizie cu privire la ce opțiune vă oferă beneficii mai mari.

Aflați mai multe despre cum să utilizați JMeter de la Academia noastră gratuită JMeter.

Lasă un răspuns

Adresa ta de email nu va fi publicată.