'JMeter frequency peaks when using ultimate thread group

I use Ultimate Thread Group for performance testing in JMeter. In combination with a timer I want to scale the number of users/threads dynamically while each user has a constant throughput of e.g. 10 requests/sec.

When the Ultimate Thread Group increases the number of users, the total request rate per second will have a high peak for a short time. After the peak, the request rate is as expected.

For example, I get this trace: Start with 40 users, 10 requests per second for each user: 40 * 10 = 400 requests/second. Increase the number of users up to 60, I expect 60 * 10 = 600 requests/second, but I get a peak of more than 3959 requests/second at the beginning.

summary = 366401 in 00:15:16 =  400.0/s Avg:     1 Min:     0 Max:  1071 Err:     0 (0.00%)
summary +  12000 in 00:00:30 =  400.0/s Avg:     1 Min:     0 Max:    20 Err:     0 (0.00%) Active: 40 Started: 40 Finished: 0
summary = 378401 in 00:15:46 =  400.0/s Avg:     1 Min:     0 Max:  1071 Err:     0 (0.00%)
summary +  12000 in 00:00:30 =  400.0/s Avg:     1 Min:     0 Max:    44 Err:     0 (0.00%) Active: 40 Started: 40 Finished: 0
summary = 390401 in 00:16:16 =  400.0/s Avg:     1 Min:     0 Max:  1071 Err:     0 (0.00%)
summary +  31784 in 00:00:30 = 1061.9/s Avg:     4 Min:     0 Max:   414 Err:     0 (0.00%) Active: 60 Started: 60 Finished: 0
summary = 422185 in 00:16:46 =  419.7/s Avg:     1 Min:     0 Max:  1071 Err:     0 (0.00%)
summary + 118770 in 00:00:30 = 3959.0/s Avg:     5 Min:     0 Max:   493 Err:     0 (0.00%) Active: 60 Started: 60 Finished: 0
summary = 540955 in 00:17:16 =  522.2/s Avg:     2 Min:     0 Max:  1071 Err:     0 (0.00%)
summary +  79419 in 00:00:30 = 2647.3/s Avg:    10 Min:     0 Max:  1435 Err:     0 (0.00%) Active: 60 Started: 60 Finished: 0
summary = 620374 in 00:17:46 =  582.0/s Avg:     3 Min:     0 Max:  1435 Err:     0 (0.00%)
summary +  37227 in 00:00:30 = 1238.1/s Avg:     6 Min:     0 Max:  1354 Err:     0 (0.00%) Active: 60 Started: 60 Finished: 0
summary = 657601 in 00:18:16 =  600.0/s Avg:     3 Min:     0 Max:  1435 Err:     0 (0.00%)
summary +  18000 in 00:00:30 =  600.3/s Avg:     2 Min:     0 Max:   219 Err:     0 (0.00%) Active: 60 Started: 60 Finished: 0
summary = 675601 in 00:18:46 =  600.0/s Avg:     3 Min:     0 Max:  1435 Err:     0 (0.00%)
summary +  18000 in 00:00:30 =  599.9/s Avg:     1 Min:     0 Max:    46 Err:     0 (0.00%) Active: 60 Started: 60 Finished: 0

visualized it looks like this: Visualization

Is there a way to avoid this peak? (I also get this peak if I increase the number of users from 60 to 80.80 to 100, ...)



Solution 1:[1]

In combination with which "timer"?

I think you're using the wrong timer and the wrong thread group for your scenario, consider moving to Concurrency Thread Group and Throughput Shaping Timer, you can connect them using feedback function so the timer will be the only place which will drive the load pattern.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Dmitri T