1

运行 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 分钟)。

谁能向我解释这里发生了什么?

4

3 回答 3

1

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

在您的情况下,测试在 600 秒后完成。最后 120 秒是这些活动线程的减速时间。您可以通过 Active Threads Over Time Listener观察它。

您的总测试持续时间将是warm-up period + hold load activity + warm-down period。即(300+600+300)= 1200秒或20分钟。

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

您也可以像这样使用Ultimate Thread Group(5+10+2)=17来更好地了解您的测试,其中预热时间为 120 秒,因此测试的总持续时间为几分钟或1020几秒。

在此处输入图像描述

于 2021-03-13T09:54:18.073 回答
0

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

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

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

如果您想要逐渐下降 - 考虑在您的测试计划中添加一个计时器或切换到允许精确控制线程的自定义线程组,请参阅 JMeter文章中的How to Ramp Down 以获取更多详细信息。

回到线程终止需要 2 分钟,情况并非如此,请确保在命令行非 GUI 模式下运行 JMeter 测试并遵循其他JMeter 最佳实践

于 2021-03-15T07:12:11.373 回答
0

它不准确并指定测试的持续时间以及完成迭代

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

于 2021-03-12T19:49:57.223 回答