【发布时间】:2018-11-27 18:40:11
【问题描述】:
我有什么:
为分布式模式下的测试创建的 Jmeter 网络:一个 Jmeter 主机加上几个 Jmeter 从机。 BeanShell 服务器已禁用。一切正常。
我想做什么:
我想让 BeanShell 服务器能够即时修改属性。
实际结果:
BeanShell 服务器启动并成功运行。 测试完成后,日志中会显示以下消息:
The JVM should have exited but did not.
The following non-daemon threads are still running (DestroyJavaVM is OK):
Thread[Thread-7,5,main], stackTrace:java.net.PlainSocketImpl#socketAccept
java.net.AbstractPlainSocketImpl#accept at line:409
java.net.ServerSocket#implAccept at line:545
java.net.ServerSocket#accept at line:513
bsh.util.Sessiond#run at line:65
java.lang.Thread#run at line:748
Thread[Thread-5,5,main], stackTrace:java.net.PlainSocketImpl#socketAccept
java.net.AbstractPlainSocketImpl#accept at line:409
java.net.ServerSocket#implAccept at line:545
java.net.ServerSocket#accept at line:513
bsh.util.Httpd#run at line:64
java.lang.Thread#run at line:748
很明显,这是因为 BeanShell 服务器正在运行并且由于某种原因没有退出。 结果,java 进程永远不会退出并会挂起。
问题:
任何想法为什么会发生?如何避免?我没有通过 http 和 telnet 连接到 beanshell 服务器。
更多详情:
所有节点都作为 Docker 容器运行。 所有节点都部署在 AWS 中。 无法在我的机器上本地重现相同的问题。即使启用了 BeanShell 服务器,一切正常,java 也应有尽有。
我尝试了什么:
尝试设置以下属性:
jmeterengine.remote.system.exit=true
jmeterengine.stopfail.system.exit=true
jmeterengine.force.system.exit=true
没有帮助,java 进程仍然挂起。
也一样bsh.system.shutdownOnExit = true;
非常感谢任何想法。
【问题讨论】: