【问题标题】:JMeter's run finish before the duration definedJMeter 在定义的持续时间之前完成运行
【发布时间】:2020-06-23 05:15:21
【问题描述】:

我们使用 GUI 中的 JMETER 5.2.1 工具进行性能测试,如果我是第一次使用它。

我想模拟我们服务的 24 小时运行,当时我注册了 30,000 个代理,每个代理每天发送 10 个查询(每天总共 300,000 个查询)。

为此,我定义了一个具有以下配置的线程组:

线程数:30,000

加速期:40,000

循环数:10

时长:86,400(24 小时)

由于某种原因,JMETER 运行仅在 11 小时后完成! 我不明白为什么,因为如您所见,我已将 Duration 设置为 24 小时。

有什么建议吗?

【问题讨论】:

    标签: performance jmeter performance-testing jmeter-5.0


    【解决方案1】:

    如果 Loop Count 不是 -1 或 Forever,根据 JMeter GUI 中的调度程序配置,持续时间将为 min(Duration, Loop Count * 迭代持续时间)。换句话说,您比 24 小时更快地完成了 10 次循环。因此,您可以永远运行您的循环并将其限制为 24 小时 - 您执行了更多循环,或者您可以尝试向您的循环添加延迟以匹配 24 小时内的 10 个循环。第三个选项是第三方插件恒定吞吐量计时器。

    我会将您的测试重新设计为 10 线程、300 加速、永久循环、持续时间 24 小时并调整循环中的延迟以匹配 (24*60*60)/300000=0.288tps 因为我将线程理解为并发连接同一时间(不是像你那样 24 小时)

    【讨论】:

    • 非常感谢!您的解决方案的问题是我需要 30,000 个线程来模拟 30,000 个客户端与我的服务通信。有没有办法以这种方式定义配置它?第三个插件对我有什么帮助?
    • 你想测试什么?是你的服务器能够处理 24 小时 0.288tps 的恒定负载吗?
    • 我想在 24 小时的工作时间内测试我的服务器,当它有 30,000 个活动客户端时,每个客户端发送 10 次请求。
    【解决方案2】:
    1. 如果您希望测试运行 24 小时 - 将 Loop countThread Group 级别设置为 Forever-1
    2. 如果要在 24 小时内执行 300 000 次查询,则需要在 JMeter 端引入速率限制以每分钟执行 208.4 个请求,可以使用 Constant Throughput Timer 来完成
    3. 不要使用 GUI 运行 JMeter 测试,因为它可能会对测试结果产生非常负面的影响,JMeter GUI 仅用于测试开发和调试,当涉及到测试执行时 - 去command-line non-GUI mode

    【讨论】:

    • 所以如果我得到它,我需要使用恒定吞吐量计时器来定义它以每分钟执行 208.4 个查询并将循环计数设置为 -1?这样我就不能保证我的 30,000 个客户中的每一个都会发送 10 个查询,不是吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    • 2011-12-01
    • 2019-07-20
    相关资源
    最近更新 更多