我将Jmeter 4.0与吞吐量整形计时器一起使用,并且我提到了以下配置:
bzm-并发线程组:
jp @ gc-吞吐量调整计时器 启动RPS:333 ||最终Rps:333 ||持续时间(秒):1200
由于测试持续时间为1200秒,Rps为333 /秒,因此通过测试的请求命中数应为(333 * 1200)=399600。但是实际的命中数在400000-410000请求范围内第二。
如何限制吞吐量整形计时器以不发送额外的请求?
答案 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,例如:
通过这种方式,您将确信将执行不超过339600个采样器(顺便说一句,如果您的应用程序响应时间大于300毫秒,则采样器的数量可以减少)