0

I am trying to see if I can simulate a burst mode in JMeter (2.x -- that's the only version I have access in this particular environment and cannot upgrade) with a sustain load, and a fixed duration/flight-time at certain intervals.

For instance, I would like to flood the target with 4 separate thread groups of 80 users, every 30 minutes for around 5 continuous minutes. This is in addition to the existing main thread group that is making 200 simultaneous requests forever (24 hours+).

I tried this answer, however, I am not seeing the desire effect. My JMeter setup is as following:

- A main thread user group (200 users, 5 secs ramp-up, forever loop)
   - It contains 4 separate HTTP Requests as its children (they get called as long as the script is not shutdown)
- 1st separate thread group with 80 threads, 5 secs ramp-up, forever loop; as its children:
   - "Constant Timer" for interval invocation, e.g. every 30 mins
   - "Runtime Controller" for duration/flight-time configuration, e.g. 5 mins continuously
   - "Loop Controller" to iteratively executing the requests, set to forever loop (I even tried fixed numbers, e.g. 10)
   - An actual `HTTP Request`
- 2nd separate thread group with identical setup except different HTTP Request
- 3rd separate thread group with identical setup except different HTTP Request
- 4th separate thread group with identical setup except different HTTP Request

I tried to play with Ultimate Thread Group but seems like it doesn't create a surge mode, but it does execute it for the set duration. The requests are uniformly distributed in that time period rather than being sent in burst mode to the target server. So it appears that it only subscribes to sending a number of requests equal to the number of thread counts for that duration.

What I want for those threads in these surge thread groups to continuously send requests for the entire configured duration, non-stop, similar to the main load thread group, rather than just sending X amount of requests (equal to the number of threads) once.

Is this achievable with

Malvon
  • 1,591
  • 3
  • 19
  • 42

2 Answers2

0

You might need to switch to a SaaS offering to support that many requests in parallel, such as https://rungutan.com

Marius Mitrofan
  • 125
  • 1
  • 6
0

I don't think Constant Timer is the right option as it creates 30 minutes delay before each HTTP Request sampler in its scope.

If you want to wait for 30 minutes and then release all 80 threads at exactly the same moment:

  1. Add Test Action sampler and configure it to "sleep" for 30 minutes
  2. Add Synchronizing Timer so all 80 threads will "sleep" together as the child of this Test Action sampler
  3. Add HTTP Request sampler which does the real job
  4. Add the same Synchronizing Timer as the child of the HTTP Request sampler

This way you will get 80 users hitting your server each 30 minutes

Dmitri T
  • 159,985
  • 5
  • 83
  • 133
  • Thanks Dmitri. The current setup as described in the question actually does invoke all four separate thread groups once every 30 minutes, so that's not an issue. The problem is that each of these separate thread groups only sends 80 requests/samples every 30 mins (80x4 total), and that's it. I want those separate thread groups to continuously send requests for 5 mins, then wait for another 25 mins till the next round of 30-min interval. Just like 200-user main thread that continuously loops forever, I want those separate threads to loop but within a set time limit of 5 mins. – Malvon Jul 06 '20 at 18:05