【问题标题】:Total time taken by jmeter to execute the given loadjmeter 执行给定负载所花费的总时间
【发布时间】:2014-02-26 06:54:28
【问题描述】:

我正在使用这些参数进行负载测试:

threads=4

ramp_up_period=90

loop_count=60

所以根据上面的数字,我的假设是四个线程中的每一个都将在 22.25 秒内创建,这 4 个线程循环将重复 60 次。

以下是负载测试总结报告:

根据 JMeter 手动加速周期是:

加速期告诉 JMeter 需要多长时间才能“加速”到所选线程的全部数量。如果使用 10 个线程,并且斜升 周期是 100 秒,那么 JMeter 将需要 100 秒才能获得所有 10 线程启动并运行。每个线程将启动 10 (100/10) 秒 在上一个线程开始之后。如果有 30 个线程和一个 加速周期为 120 秒,然后每个连续线程将 延迟 4 秒。

所以根据上述场景,使用提到的线程组参数执行负载测试的大概总时间是:

TotalTime = ramp_up_period*loop_count

在我的情况下计算为 90*60 = 5400 秒,但根据摘要总时间即将到来 74 秒

JMeter 版本为2.11

我的理解有什么问题还是JMeter有问题?

【问题讨论】:

    标签: jmeter


    【解决方案1】:

    最初,JMeter 将启动 1 个线程,该线程将在您的循环控制器下执行某些操作。 30 秒后第二个线程将加入,再过 30 秒第三个线程将启动,最后在第 90 秒第四个线程将启动。

    从 90 秒开始,4 个线程将执行“循环控制器下的内容”。

    无法确定需要多长时间,尤其是在负载下。如果您需要持续大约 N 秒的负载测试,您可以在Sheduler 下的Thread Group 中使用Duration 输入。

    如果您想在满足某些条件时强制停止测试,还有 2 个选项:

    示例 Beanshell 代码(假设在无限循环中的单独线程组中运行,触发事件之间有合理的延迟)

    if (currenttime - teststart > Long.parseLong(props.get("test_run_time").toString())) {
        try {
            DatagramSocket socket = new DatagramSocket();
            byte[] buf = "StopTestNow".getBytes("ASCII");
            InetAddress address = InetAddress.getByName("localhost");
            DatagramPacket packet = new DatagramPacket(buf, buf.length, address, 4445);
            socket.send(packet);
            socket.close();
        } catch (Throwable ex) {
        }
    
    }
    

    【讨论】:

      【解决方案2】:

      如果您在没有并发的情况下工作,TotalTime 将是。在多线程环境中工作时,线程 1 可能已经在执行第二次调用,而线程 3 仍在启动。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-30
        • 1970-01-01
        • 2010-09-23
        相关资源
        最近更新 更多