JMeter线程组爬升时间加持续时间问题

JMeter线程组爬升时间加持续时间问题,jmeter,threadgroup,Jmeter,Threadgroup,运行JMeter版本5.4.1 我对JMeter线程组进行了以下设置: 线程数:300 加速期:300秒 循环计数:无限 指定线程生存时间:持续时间600秒,启动延迟:0 线程组设置为在出现示例错误后继续 因此,在上面的设置中,我希望测试每秒运行1个线程,当它达到300(5分钟)秒时,它将运行整整300个线程。停止前,每个线程应运行600秒(10分钟)。我预计总运行时间为900秒(最后一个线程从5分钟开始+10分钟运行时间=15分钟) 但实际的行为是不同的,我不明白为什么 实际行为:

运行JMeter版本5.4.1

我对JMeter线程组进行了以下设置:

  • 线程数:300

  • 加速期:300秒

  • 循环计数:无限

  • 指定线程生存时间:持续时间600秒,启动延迟:0

线程组设置为在出现示例错误后继续

因此,在上面的设置中,我希望测试每秒运行1个线程,当它达到300(5分钟)秒时,它将运行整整300个线程。停止前,每个线程应运行600秒(10分钟)。我预计总运行时间为900秒(最后一个线程从5分钟开始+10分钟运行时间=15分钟)

但实际的行为是不同的,我不明白为什么

实际行为:

--300秒后旋转300个线程,每秒旋转1个线程。酷,这就是我所期待的

--在600秒标记处,第一条螺纹开始脱模。到目前为止很酷很好

--在12分钟(720秒)时,所有线程都已停止,测试已完成。。。嗯。。这里发生了什么事?我期待的是整整300秒的关机时间,不是120秒

因此,完整测试以720秒(12分钟)完成,而不是900秒(15分钟)


谁能给我解释一下这里发生了什么事吗?

这不准确,并指定了加上完成部分

这表示测试的总持续时间。通过指定持续时间值来运行测试的一个缺点是,当测试持续时间完成时,测试立即停止;在没有完成循环(迭代)的情况下,您可以看到事务计数的一些差异


您必须相应地配置测试持续时间

在您的情况下,测试在600秒时结束。最后120秒是这些活动线程的缓降时间。你可以观察它通过

您的总测试持续时间类似于
预热期+保持负载活动+预热期
。i、 e
(300+600+300)=1200
秒或
20
分钟

300个线程将在300秒内处于活动状态,然后所有300个线程将在600秒内命中对服务器的请求,然后这300个线程将在接下来的300秒内关闭

您也可以这样使用,以便更好地理解您的测试,其中预热期为120秒,因此测试的总持续时间为
(5+10+2)=17
分钟或
1020


您指定测试持续时间为600秒,为什么您希望测试持续时间更长

一旦超过600秒,JMeter将要求线程停止,所有线程停止所需的时间主要取决于测试的性质、请求/响应大小等。在理想条件下,测试应立即停止

因此,如果您希望测试运行15分钟,请将持续时间设置为900秒

如果您希望逐步下降-考虑将定时器添加到测试计划中,或者切换到允许对线程进行精确控制的A,请参阅文章以获得更多细节。


返回线程终止需要2分钟,情况应该不是这样,请确保并遵循其他

测试循环本身非常快,每个循环不到一秒钟。但它被设置为无限循环。因此,这里的实际测试持续时间应该无关紧要,至少它不应该造成运行时间的3分钟差异。@JaySym使用此功能不能依赖于精确的计时