【问题标题】:JMeter Thread group Ramp up time plus duration questionJMeter 线程组加速时间加持续时间问题
【发布时间】:2021-06-10 19:26:12
【问题描述】:

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

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

【问题讨论】:

    标签: jmeter threadgroup


    【解决方案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,以便更好地了解您的测试,其中预热时间为120秒,因此测试的总持续时间为(5+10+2)=17分钟或1020秒。

    【讨论】:

      【解决方案2】:

      不准确,指定duration of the test加上完成迭代

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

      【讨论】:

      • 测试循环本身非常快,每个循环不到一秒。但它设置为无限循环。所以这里的实际测试持续时间应该无关紧要,至少它不应该导致运行时间相差 3 分钟。
      • @JaySym 你不能依赖使用此功能的确切时间
      【解决方案3】:

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

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

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

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

      回到线程终止需要 2 分钟,应该不是这种情况,请确保 run your JMeter test in command-line non-GUI mode 并关注其他 JMeter Best Practices

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-23
        相关资源
        最近更新 更多