-1

I'm trying to simplify the implementation of stochastic performance testing using jmeter. We have done this before, but its takes to much time.

The thing is, if i have the amount of concurrent users (based on total visits and elapsed times), i assume that the elapsed time will not change. But, if during an stress situation the server takes more than expected, the users will stack up, because some users will not leave in the expected time. Therefore, the real concurrence will be different than calculated.

A traditional test will keep the pre established virtual users (it doesn't matter if increases or not ), even if the elapsed times increases due to server slower response. If the server responses are slower, jmeter will do less iterations. I don't want to do that, i want to create more threads if necessary in order to keep the arrival rate.

Is there any way i can set user arrivals rate instead on constant threads over time?

4 Answers4

1

I worked habitually in performance Test using he intensity of load based on Arriving rate . You must consider the next issues because is model more accuracy than other based on virtual users, but have a lot of complexity that you need to overcome.

1.- For Jmeter you need to change of dispatcher of threads, Because the plugs -in by default are inefficient.( don't worry the commercial products have the same issues and are expensive) 2.- You must be built a Model of arriving rate. Changing the rate by Time using a empirical distribution or other well - known like poisson , erlang and so on. 3.- The active users and concurrency is consequence of: arriving rate, the work ejecutado, and the sumatory of thinks time between work. You can not control the variable virtual user, dont have sense, this is a change in tradicional way to drive a test. For example you can use the data of google analytics and built a stocastic model, you do not need to set de virtual users because is a results of test. the test give you the answer what is the number of users /sessions active when I have a determined arriving rate. 4.- But the point number 3 have a very important issue, beacuse the platform of load need more capacity than the traditional test based on virtual users.

Is a trade of more accuracy but more complexity against the old method of virtual users that is less complexity but unreliable.

I use to do this kind of test over B2C sites with 500.000 visits by Hour, with 5 - 7 millions of pages by hours. The only way to built an accuracy test with this label of load is to use a model based on rate of arriving.

0

I dont think there is any direct way to achieve what you want.

but you can try this out, though its not a correct way (a custom plugin would be the best option, please check on jmeter plugins.)

1. keep no of threads very high 
2. set ramp up duration as it will set the arrival rate which you need 
3. set the expected test duration

example:

suppose I want to conduct a test for 10 min with arrival rate of 2 users per second so values will be,

no of threads : 2000
ramup : 600
test duration : 600

Another option is Stepping Thread Group Plugin. It should serve your purpose.

Nachiket Kate
  • 8,473
  • 2
  • 27
  • 45
0

There is 2 options for you:

  1. Built-in Constant Throughput Timer
  2. Throughput Shaping Timer from jmeter-plugins.org

The function of timers is to delay the requests. So you creating the excessive number of threads and then the timer will delay they to achieve desired arrival rate.

Andrey Pokhilko
  • 2,578
  • 18
  • 19
0

I think that the following combination covers 99% of use cases:

  1. Ultimate Thread Group for smart and easy ramp-up, ramp-down and holding the load in-between
  2. Constant Throughput Timer - to set exact required load
Dmitri T
  • 159,985
  • 5
  • 83
  • 133