0
votes

I have a question that has to do with the Throughput Shaping Timer usage. Maybe I have to use another plugin to cover my demand, but anyway I decided at least to investigate it and understand the behavior.

The task - emulate 20 TPS on the platform for the following user scenario:

The test plan

But with the strict TPS distribution:

  1. Login - 1 TPS
  2. Get user info - 6 TPS
  3. Search - 12
  4. Logout - 1 TPS

Throughput Shaping Timer investigation

I made the following:

  1. Added the "Concurrency thread group" with flexible settings, just to be lazy and delegate the threads set up to the plugin. enter image description here

  2. Added the "Throughput shaping timer" enter image description here

Results/questios:

  • I got 4.8 TPS on average for all requests (I suppose it's expected for the current flow) enter image description here
  • General TPS time to time is more than 20 TPS set in the test. Is it OK, or some settings are incorrect? from my understanding the peaks are too high.. enter image description here
  • Some requests have TPS peaks, looks not very good due to peaks enter image description here

So the questions:

  1. Is it possible to apply some tunings (or set/change flow) for the current stack of the tools ("Concurrency thread group" with flexible settings and "Throughput shaping timer") to distribute target 20 TPS like described in the task?
  2. How "Throughput shaping timer" divide the TPS between threads?
  3. Please suggest the best solution for the current task

Many thanks

1

1 Answers

2
votes

Different throughputs is not something you can achieve within the bounds of a single Thread Group because according to JMeter threads model JMeter waits for the previous response before starting the next request therefore all your scenarios will act at the speed of the slowest one.

So you need to split your requests and put each one under the separate Thread Group and apply the throughput shaping individually.

If you need to pass some data like cookies or tokens from the "Login" sampler to other thread groups you either need to convert them into JMeter Properties using __setProperty() function in the "Login" thread group and __P() function in other thread groups or go for Inter-Thread Comminucation Plugin