Testowanie z JMeter: jak uruchomić N żądań na sekundę

Muszę sprawdzić, czy nasz system może wykonywać N żądań na sekundę. Technicznie jest to 2 żądania do jednego API, 2 żądania do drugiego i 6 żądań do trzeciego. Ale ważne, że powinny one się zdarzyć jednocześnie-tak 10 wniosków na sekundę. Tak więc, w JMeter stworzyłem trzy grupy wątków, najpierw definiuje liczbę wątków 1, A Czas rozruchu 0. Druga grupa wątków jest taka sama, a trzecia grupa wątków definiuje liczbę wątków 6 i czas rozruchu 0. Ale to nie naprawdę gwarantuje, że będzie je uruchamiać na sekundę Jak mam to naśladować? I jak widzę wyniki, czy to było w stanie wykonać, czy nie było?

Dzięki!

Author: Ripon Al Wasim, 2011-02-16

6 answers

Jak w przypadku każdego testu sieciowego, zawsze będą problemy, zwłaszcza z opóźnieniami - nawet jeśli mógłbyś wysyłać dokładnie 6 na sekundę, będą one wysyłane sekwencyjnie (tak właśnie wysyłane są pakiety) i mogą nie wszystkie trafić w tę sekundę, plus Czas Przetwarzania.

Zazwyczaj, gdy parametry wydajności określone x na sekundę, jest mierzona w pewnym okresie czasu. Twoje API może nawet mieć bufor - więc technicznie możesz wysyłać 6 na sekundę, ale przetwarzać 5 na sekundę, z bufor 20, co oznacza, że będzie dobrze przez 20 sekund ruchu, ponieważ wysłałbyś 120, co zajęłoby 120/5 = 24 sekundy, aby przetworzyć. Ale coś więcej przepełni bufor. Tak więc wysłanie dokładnie 6 w sekundę do testu jest niewystarczające.

W grupie wątków masz rację ustawiając liczbę wątków (użytkowników) na 6. Następnie uruchom go looping forever (zaznacz go lub umieść w pętli while) I dodaj listener jak raport zbiorczy i drzewo wyników. Wyniki można wykorzystać do sprawdzenia właściwe rzeczy są wysyłane i reagowane (zakładając, że walidujesz odpowiedzi), a w raporcie zbiorczym możesz zobaczyć, ile z każdej aktywności dzieje się na godzinę(oczywiście pomnożyć przez 3600 sekund, ale z powodu tej niedokładności najlepiej jest uruchomić go przez dobry czas).

Początkowy test obciążenia może być teraz uruchomiony, a jako bardziej dokładny test możesz pozostawić go na dłużej (test zanurzenia), aby sprawdzić, czy nie występują inne problemy z przepełnieniem bufora powierzchni, wyciekami pamięci lub innymi nieoczekiwane wydarzenia.

 37
Author: Mark Mayo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-17 15:46:11

Możesz użyć ConstantThroughputTimer.

Cytat z plików pomocy JMeter poniżej:

18.6.4 Timer Stałej Przepustowości Ten czasomierz wprowadza zmienne pauzy, obliczane w celu utrzymania całkowitej przepustowości (w kategoriach próbek na minutę)jak najbliżej danej liczby. Oczywiście przepustowość będzie niższa, jeśli serwer nie jest w stanie jej obsłużyć, lub jeśli inne timery lub czasochłonne elementy testowe temu zapobiegają. N. B. Chociaż Timer nazywa się timerem stałej przepustowości, wartość przepustowości nie musi być stała. Może być zdefiniowana jako zmienna lub wywołanie funkcji, a wartość może być zmieniana podczas testu.

Na przykład użyłem go do wygenerowania 40 żądań na sekundę:

 <ConstantThroughputTimer guiclass="TestBeanGUI" testclass="ConstantThroughputTimer" testname="Constant Throughput Timer" enabled="true">
      <stringProp name="calcMode">all active threads in current thread group</stringProp>
      <doubleProp>
        <name>throughput</name>
        <value>2400.0</value>
        <savedValue>0.0</savedValue>
      </doubleProp>
    </ConstantThroughputTimer>

I to jest podsumowanie:

Created the tree successfully using performance/search-performance.jmx
Starting the test @ Tue Mar 15 16:28:39 CET 2011 (1300202919244)
Waiting for possible shutdown message on port 4445
Generate Summary Results +  3247 in  80,3s =   40,4/s Avg:    18 Min:     0 Max:  1328 Err:   108 (3,33%)
Generate Summary Results +  7199 in 180,0s =   40,0/s Avg:    15 Min:     1 Max:  2071 Err:   378 (5,25%)
Generate Summary Results = 10446 in 260,3s =   40,1/s Avg:    16 Min:     0 Max:  2071 Err:   486 (4,65%)
Generate Summary Results +  7200 in 180,0s =   40,0/s Avg:    14 Min:     0 Max:   152 Err:   399 (5,54%)
Generate Summary Results = 17646 in 440,4s =   40,1/s Avg:    15 Min:     0 Max:  2071 Err:   885 (5,02%)
Generate Summary Results +  7199 in 180,0s =   40,0/s Avg:    14 Min:     0 Max:  1797 Err:   436 (6,06%)
Generate Summary Results = 24845 in 620,4s =   40,0/s Avg:    15 Min:     0 Max:  2071 Err:  1321 (5,32%)
Ale przeprowadzam ten test w mojej sieci.
 89
Author: lb_lb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-21 11:44:32

Użyj timera kształtowania przepustowości

 20
Author: Andrey Pokhilko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-15 14:59:34

Miałem podobny problem i oto dwa rozwiązania, które znalazłem:

Rozwiązanie 1:
Możesz użyć Stepping Thread Group (pozwala ustawić etapy wzrostu liczby wątków w określonych okresach czasu) ze stałym timerem przepustowości. Timer przepustowości pozwala ustawić liczbę próbek, które wątek może wysłać na minutę (np. jeśli ustawisz ją na 1, Wątek wyśle tylko jedno żądanie na minutę). Możesz również zastosować Timer przepustowości do wszystkich wątków w swojej Grupie wątków lub mieć Timer dla każdego wątku z własnymi ustawieniami. Więcej informacji na temat timera przepustowości można znaleźć tutaj: https://www.blazemeter.com/blog/how-use-jmeters-throughput-constant-timer

Rozwiązanie 2:
Użyj "Ustaw Grupę Wątków". Możesz obliczyć liczbę wątków i czas generowania, aby uzyskać pożądane wątki na sekundę.

 4
Author: Yury Ustsinchyk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-25 02:58:31

Możesz użyć funkcji sprzężenia zwrotnego harmonogramu i będzie również potrzebna grupa wątków współbieżnych

 0
Author: raman rayat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-11-23 08:48:03

To samo można również zrobić, konfigurując "ConstantThroughputTimer", jak sugerowano powyżej z interfejsu użytkownika, również przez dodanie "Constant Throughput Timer", przechodząc przez kliknięcie prawym przyciskiem myszy na grupie wątków, a następnie kliknij na Timer, a następnie wybierz"Constant Throughput Timer".

 0
Author: Adbhut Rai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-02-02 18:15:23