Jmeter吞吐量整形计时器发送更多所需的请求

时间:2019-03-11 06:22:49

标签: jmeter jmeter-plugins jmeter-4.0

我将Jmeter 4.0与吞吐量整形计时器一起使用,并且我提到了以下配置:

bzm-并发线程组:

  • 目标并发1000
  • 启动时间:1
  • 升级步骤:1
  • 保留目标率:100分钟

jp @ gc-吞吐量调整计时器 启动RPS:333 ||最终Rps:333 ||持续时间(秒):1200

由于测试持续时间为1200秒,Rps为333 /秒,因此通过测试的请求命中数应为(333 * 1200)=399600。但是实际的命中数在400000-410000请求范围内第二。

如何限制吞吐量整形计时器以不发送额外的请求?

2 个答案:

答案 0 :(得分:1)

您的总测试持续时间isn't 1200 seconds。查看并发线程组配置,您的测试持续时间精确为6001秒(1000个用户的启动时间为1秒,保持目标速率时间为6000秒)。

要获得所需的RPS,必须遵循以下公式来定义并发线程组中的线程数:

  

线程池大小可以像RPS * <max response time> / 1000

那样计算

如果您的响应时间为1 second,则333 Threads足以实现此RPS。我猜在这种情况下,您使用了更多线程。

根据您给定的测试计划,它的工作方式就像1秒钟内有1000个用户处于活动状态,然后他们将尝试在1200秒内达到333 RPS,然后将保留1000个用户的剩余时间请求(6001-1220 = 4801秒),您提到的1000个用户将保持负载100分钟。因此,您收到的请求超出了预期。

因此,在线程组中定义线程数并相应地增加时间,并正确同步测试持续时间(在这种情况下,保持加载时间可能是20分钟而不是100分钟)。

答案 1 :(得分:0)

Throughput Shaping Timer达到其持续时间限制时,JMeter无法立即停止1000个线程,JMeter“告诉”线程停止1200秒,并且可能需要一段时间才能正常关闭线程。

鉴于您的设置,拥有完全399600个采样器的唯一方法是在Total Executions模式下使用Throughput Controller,例如:

enter image description here

通过这种方式,您将确信将执行不超过339600个采样器(顺便说一句,如果您的应用程序响应时间大于300毫秒,则采样器的数量可以减少)