【问题标题】:JMeter test not stopping after duration ends in distribution mode在分发模式下持续时间结束后 JMeter 测试未停止
【发布时间】:2021-03-27 19:04:22
【问题描述】:

我正在使用基本线程组和 HTTP 采样器运行一个非常简单的 JMeter 测试。为执行设置的持续时间为 10 分钟(600 秒)。在此处输入图片说明

测试在我的本地以 JMeter GUI 和 CLI 模式成功运行并自行停止(10 分钟后)。

但是,当我在分布式模式下运行相同的测试时,测试不会自行停止并被挂起。我一直在观察这个问题,主要是线程数 200 及以上。

我已经覆盖了一些 JMeter 属性:

"server.rmi.ssl.disable": "true",
"jmeterengine.nongui.maxport": JMETER_EXEC_PORT,
"jmeterengine.nongui.port": JMETER_EXEC_PORT,
"client.tries": str(3),
"client.retries_delay": str(5000),
"client.rmi.localport": CLIENT_RMI_LOCALPORT,
"server.rmi.localport": SERVER_RMI_LOCALPORT,
"server_port": SERVER_PORT,
"server.exitaftertest": "true",
"jmeterengine.stopfail.system.exit": "true",
"jmeterengine.remote.system.exit": "true",
"jmeterengine.force.system.exit": "true",
"jmeter.save.saveservice.output_format": "csv",
"jmeter.save.saveservice.autoflush": "true",
"beanshell.server.file":  "./extras/startup.bsh",
"jmeter.save.saveservice.connect_time": "true",
"jpgc.repo.sendstats": "false",

这是我分别用于 JMeter 客户端和服务器的 JMeter CLI 命令:

// JMeter Client
jmeter.sh -n -f -t {testPlan} -j jmeter.log -l report.csv -LINFO -Lorg.apache.http=DEBUG -Lorg.apache.http.wire=ERROR -Ljmeter.engine=DEBUG -X -R {serverIPs}

// JMeter Server
jmeter.sh -s -Jbeanshell.server.port={beanshellServerPort}
  1. 任何帮助指针,以确保测试在指定之后结束 持续时间?
  2. 这可以由任何 JMeter 控制/强制执行吗 设置/属性?
  3. 是否与基本线程组 v/s 相关 并发/终极线程组之类的线程组插件?

示例测试运行:

我尝试让 10 名工人运行此测试计划,其中 6 人成功完成,其中 4 人被绞死。请查找logs and test plan here

另外,为什么 Summariser 显示 Active + Finished 线程多于 Started?

【问题讨论】:

    标签: jmeter jmeter-plugins jmeter-5.0


    【解决方案1】:

    查看日志,似乎 JMeter 在报告测试完成后并没有完成所有线程:

    2020-12-16 08:19:48,933 INFO o.a.j.t.JMeterThread: Thread finished: 10.244.11.4-Thread Group 1-86
    2020-12-16 08:25:22,926 INFO o.a.j.e.RemoteJMeterEngineImpl: Shutting test ...
    2020-12-16 08:25:22,927 INFO o.a.j.e.RemoteJMeterEngineImpl: ... stopped
    2020-12-16 08:25:22,928 INFO o.a.j.t.JMeterThread: Stopping: 10.244.11.4-Thread Group 1-78 
    2020-12-16 08:25:22,928 INFO o.a.j.t.JMeterThread: Stopping: 10.244.11.4-Thread Group 1-190
    

    您需要将失败的从站的日志文件与正在通过的从站的日志文件进行比较,这将允许您检测任何不一致之处。

    我能想到的一个可能原因是您分配的JVM Heap space 太少,至少有一个控制器使用默认的 1 GB 堆,这可能不足以为 200 多个虚拟用户执行测试。考虑将其提高到更高的值。请参阅9 Easy Solutions for a JMeter Load Test “Out of Memory” Failure 文章了解有关此以及其他 JMeter 性能和调优技巧的更多详细信息

    如果问题仍然存在,找出线程卡住原因的唯一方法是使用thread dump

    【讨论】:

    • 谢谢@Dmitri!我进行了线程转储,发现了一些挂起的 HTTP 请求。曾尝试进一步调试,但在设置超时时遇到了一些问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    相关资源
    最近更新 更多