hvis du har et e-handelssted (eller et hvilket som helst sted for den sags skyld), er det ikke ualmindeligt, at du forventer et højere trafikniveau på bestemte dage, som f.eks. I øjeblikke som disse er vi nødt til at tage vores belastningstest til det næste niveau og simulere et større antal samtidige brugere. Hvis vi kører vores belastningstest lokalt med Apache JMeter prist, er der visse begrænsninger for antallet af brugere, du kan køre, selvom din computer har nok CPU og hukommelse.
Hvordan kan vi skabe et scenarie med mere end 800 samtidige brugere, der bruger JMeter? Et af svarene kører JMeter i distribueret tilstand. For dem af jer, der aldrig har hørt om det, her er en kort forklaring.
når vi taler om distribution af JMeter, henviser vi til en Master-Slave-arkitektur, hvor JMeter bruger Java RMI til at interagere med objekter i et distribueret netværk. Du kan se dette på billedet nedenfor.
distribueret test gør det muligt at have en lokal JMeter (master), der håndterer testudførelsen, sammen med flere eksterne JMeter-forekomster (slaver), der sender anmodningen til vores målserver.
men før du kan køre JMeter på en distribueret måde, er der et par enkle trin, du skal udføre.
først skal vi have flere computere.
så er vi nødt til at få JMeter-serveren til at køre på hvert slavesystem, vi har. Til dette formål er vi nødt til at udføre jmeter-serveren.bat (JMeter-server til unikke brugere), der er placeret i jmeter/bin. Når vi kører det, skal vi se noget som dette:
find derefter jmeteret gennem den samme sti, men i mastersystemet.egenskaber fil. Rediger denne fil, og tilføj IP ‘ erne for alle slavesystemer, der skal være involveret i ejendommen remote_hosts. Sørg for, at master-og slavesystemerne er placeret i det samme undernet.
det er meget vigtigt at huske, at alle værdierne skal adskilles med kommaer (i dette eksempel bruger vi kun et slavesystem, bare for at holde det enkelt).
når alle disse trin er gennemført, kan vi starte JMeter og udføre de tests, vi har brug for. I dette tilfælde skal vi udføre JMeter ved hjælp af GUI-tilstand, så vi kan få en bedre ide om, hvordan det virker. Imidlertid anbefales ikke-GUI-tilstand stærkt til testformål.
antallet af brugere, rampe op og iterationer skal konfigureres i master systems-Trådgruppen som normalt. Når du kører testen, replikeres disse betingelser på hvert slavesystem.
efter start af JMeter og indlæsning af vores test har vi to muligheder. Den ene, konfigureret gennem mastersystemet, er gennem Run->Fjernstart og vælg derefter slavesystemet, hvor vi vil udføre. Den anden, der også er konfigureret via mastersystemet, køres->Fjernstart alle for at starte testen på alle tilgængelige slavesystemer.
(da vi kun indstiller et slavesystem, er der ingen forskel mellem de to muligheder i dette eksempel).
her har vi et simpelt scenario, hvor vi kan søge og se en artikel på et e-handelssted:
som du kan se, har vi tilføjet en Visningsresultater Trælytter, så vi kan kontrollere, om testen blev udført korrekt eller ej. Når vi kører en test eksternt, vil vi være i stand til lokalt at se testresultatet på Visningsresultaterne Trælytter som jeg allerede nævnte, men i slavesystemerne kan vi kun observere testens starttid og sluttidspunkt.
Lokalt:
Fjernadgang:
bag kulisserne udfører hvert slavesystem belastningstestene med de betingelser, vi sætter i mastersystemet. På denne måde opnår vi et højere antal samtidige brugere og dermed en højere belastning på vores målserver.
derfor, hvis vi virkelig vil distribuere belastningen, skal vi gøre det manuelt. F. eks: hvis vi ønsker at nå 10.000 samtidige brugere, og vi har 10 slavesystemer, skal vores testplan have 1000 brugere, så vi ender med at have 10.000 i alt.
en anden interessant ting, vi kan gøre, er at tilføje logik til vores test ved at tilføje en if-Controller. If-controlleren giver os mulighed for at vælge en bestemt strøm, vi vil udføre, afhængigt af det system, der udfører testen. Ao, forskellige slavesystemer kører forskellige dele af testen.
for eksempel, hvis vi tilføjer en parameter, når vi kører jmeter-serveren på slavesystemerne (./ jmeter-server-Jparam=1) Vi kan placere en betingelse som ${__javaScript(${param}==1)} inden for If-controlleren, så vi kan udføre bestemte anmodninger afhængigt af slavesystemet.
det er det! Vi har med succes udført en test over et JMeter distribueret system. Dette ser måske ikke meget kompliceret ud, fordi vi valgte kun at bruge et slavesystem. Men hvis du har brug for at simulere 25.000 samtidige brugere, er omkostningerne ved at vedligeholde alle disse systemer enorme. Der kan være en mulig løsning på vedligeholdelsesproblemerne, og det er at montere al den arkitektur, vi har set over Docker-containere (du kan se et eksempel her).
dette vil dog stadig ikke være godt nok, hvis vores mål er at køre belastningstest med jævne mellemrum. Vi har monteret al den distribuerede arkitektur i en computer, så vi bruger en betydelig mængde ressourcer. Konceptet med at distribuere JMeter over Docker giver mere mening, hvis vi har muligheden for at eskalere antallet af containere efter behov, som i en cloud computing-tjeneste.
et andet problem, når du kører JMeter i distribueret tilstand, er, hvordan du håndterer CSV-filer, når du har parametriserede data i dine tests. Dette skyldes, at vi skal have adskilte filer, og hvis vi skal opdatere dem, skal vi gå til hvert slavesystem og foretage ændringerne.
for at løse alle disse begrænsninger og ulemper kan vi bruge Flammemeter, som giver os en nem måde at håndtere vores belastningstest på. Alt, hvad vi skal gøre, er at uploade vores fil. Vi kan også uploade en konsolideret CSV-fil med alle de nødvendige data, og vi sørger for at opdele den, afhængigt af mængden af motorer, vi har indstillet.
på Vi kan indstille mængden af brugere eller kombinationen af motorer (slavesystemer) og tråde, som vi vil anvende på vores test. Vi kan også konfigurere yderligere værdier som flere placeringer.
prøvningsresultater:
sådan! Nu har du set et par løsninger til at køre belastningstest i stor skala, min anbefaling til dig er at skabe din egen oplevelse og træffe en beslutning om, hvilken mulighed der giver dig større fordele.
Lær mere om, hvordan du bruger JMeter fra vores gratis JMeter academy.