Nick Danielsson wrote:

Hello!

As the subject suggest I'm having trouble getting the expected throughput when I pass 6000 samples/min to the Constant Throughput Timer, it seems between 6250-10500 samples/min the throughput is usually lower then expected but when it is at 11000 samples/min or above the throughput is always higher then expected.


I have a testplan with 3 scenarios, the setup is the same for all 3 and they read from the same testdatasource (csv-file) via CSV Data Set Config. We have a setUp Thread Group where we set some propertys, throughput, thread count, test scenario, etc, with some JSR223 PreProcessors and JSR223 samplers, then the "main" Thread Group begins. It contains the following in order:


/Constant Throughput Timer/ - with target throughput = ${__property(Tpm)} (set as a property in the setUp depending on scenario), and Calculate Throughput based on = all active threads (shared)

X3 /If Controllers/ - One for each scenario. Each If Controller have X amount of /Throughput Controllers/, one for every HTTP Request to make sure the distribution of requests reflects production. In the Throughput Controller we have a /Module Controller/ pointing to a /Test Fragment/ containing that specific HTTP Request. All of these Test Fragments are located in the Test Plan root outside of the main Thread Group and almost everyone of the Test Fragments are made up of a single HTTP Request.



That's basically it, every scenario is built the exact same way. Now to the problem.

The first scenario has a throughput of 2400 samples/min (40 samples/sec), 20 threads and works great, perfect distribution of both HTTP requests and throughput, no problems here.

The second scenario has a throughput of 14000 samples/min (233,3 samples/sec) 50 threads, the distribution of requests are perfect but the throughput is always off by about 1000 samples/min (16,6 samples/sec) *higher* than what is set in the constant throughput timer.

The third scenario has a throughput of 10200 samples/min (170 samples/sec) 50 threads, the distribution of requests are perfect but the throughput is off here as well, not by as much but till by about 500 samples/min *lower* than what is set in the constant throughput timer.

I have tried with increased amount of threads and lower amount of threads, but this doesn't affect the outcome.

I've tried changing the throughput and I get some strange results from it, when the throughput is at or above 11000 it seem to always result in about 1000 samples/min *higher* then what was set. When the throughput is at between 6250 - 10500 it usually results in an output that is around 200 - 500 samples/min *lower* then what was set.

There seem to be some cut off happening around 6000 samples/min because when I run tests with that throughput or lower they're close to perfect.

I've been monitoring the server generating the load and the test target servers and they all show no sign of overworking.

We use 1 server to generate the load and it runs Jmeter 5.6.2

Kind regards, Nick


PÖverväg miljöpåverkan innan du skriver ut detta e-brev.

Vill du veta hur Pensionsmyndigheten hanterar dina personuppgifter? Se myndighetens webbplats <https://www.pensionsmyndigheten.se/om-pensionsmyndigheten/allmanna-handlingar/om-personuppgifter>.

1. In order to be able to run Samplers using different "throughputs"
   you need to put them under different Thread Groups
   <https://jmeter.apache.org/usermanual/component_reference.html#Thread_Group>,
   JMeter waits for the previous response before sending the next
   request therefore the sequence of the requests will be run at the
   speed of the slowest request
2. Constant Throughput Timer is only capable of *pausing* the threads
   in order to *limit* Samplers execution speed to the desired value,
   it will not kick off extra threads if the current amount is not
   sufficient for conducting the required load. If this is your case
   either increase the number of threads or consider switching to
   Concurrency Thread Group
   <https://jmeter-plugins.org/wiki/ConcurrencyThreadGroup/> and
   Throughput Shaping Timer
   <https://www.blazemeter.com/blog/jmeters-shaping-timer-plugin>
   combination.
3. There is Precise Throughput Timer
   
<https://jmeter.apache.org/usermanual/component_reference.html#Precise_Throughput_Timer>
   which is more "precise" especially when your test lasts less than 1
   minute or you change the throughput property frequently.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@jmeter.apache.org
For additional commands, e-mail: user-h...@jmeter.apache.org

Reply via email to