Jmeter JVM应该已经退出,但没有退出
在非gui模式下使用JMeter执行脚本和远程测试时,我会收到错误消息,如何解决该问题Jmeter JVM应该已经退出,但没有退出,jmeter,Jmeter,在非gui模式下使用JMeter执行脚本和远程测试时,我会收到错误消息,如何解决该问题 summary = 0 in 00:00:00 = ******/s Avg: 0 Min: 9223372036854775807 Max: -9223372036854775808 Err: 0 (0.00%) Tidying up remote @ Sun Jan 07 21:00:11 EST 2018 (1515376811888) ... end of run The
summary = 0 in 00:00:00 = ******/s Avg: 0 Min: 9223372036854775807 Max:
-9223372036854775808 Err: 0 (0.00%)
Tidying up remote @ Sun Jan 07 21:00:11 EST 2018 (1515376811888)
... end of run
The JVM should have exitted but did not.
The following non-daemon threads are still running (DestroyJavaVM is OK):
Thread[Thread-5,5,main], stackTrace:java.net.DualStackPlainSocketImpl#accept0
java.net.DualStackPlainSocketImpl#socketAccept at line:131
java.net.AbstractPlainSocketImpl#accept at line:409
java.net.PlainSocketImpl#accept at line:199
java.net.ServerSocket#implAccept at line:545
java.net.ServerSocket#accept at line:513
bsh.util.Sessiond#run at line:71
java.lang.Thread#run at line:748
Thread[DestroyJavaVM,5,main], stackTrace:
Thread[Thread-3,5,main], stackTrace:java.net.DualStackPlainSocketImpl#accept0
java.net.DualStackPlainSocketImpl#socketAccept at line:131
java.net.AbstractPlainSocketImpl#accept at line:409
java.net.PlainSocketImpl#accept at line:199
java.net.ServerSocket#implAccept at line:545
java.net.ServerSocket#accept at line:513
bsh.util.Httpd#run at line:70
java.lang.Thread#run at line:748
异常来自守护进程线程,如下所述: JMeter将退出它启动的所有非守护进程线程,但可能仍会保留一些非守护进程线程;这将阻止JVM退出。为了检测这种情况,JMeter在退出之前启动一个新的守护进程线程。此守护进程线程等待一小段时间;如果它从等待中返回,那么JVM显然无法退出,线程会打印一条消息说明原因 从异常详细信息来看,您似乎有一些套接字连接。这些可以是HTTP采样器,其他一些打开套接字或自定义脚本的采样器。默认情况下,守护进程线程等待2秒,因此如果任何采样器上的超时时间更长,则可能是守护进程只需要等待更长的时间(或者您需要缩短超时时间) 因此:
jmeter.exit.check.pause=...
例如,如果采样器配置为等待30秒,则将此值设置为32秒true
,如下所述:
正如help所说,通常情况下这是不必要的,但是如果线程真的被卡住了,那么就没有太多的选择了最有可能的情况是JMeter过载,即您试图在硬件规格较低的机器上启动太多线程,或者您没有正确调整JMeter以适应高负载,或者两者兼而有之
似乎您有自定义代码或某个插件无法按照此根堆栈跟踪正确处理退出: bsh.util.Httpd#在第70行运行
因此,请检查此脚本或报告错误。我现在也遇到了同样的问题(我使用的是jmeter的4.0版),解决方案是在
jmeter.properties上禁用beanshell服务器
只需在文件jmeter.properties
中注释beanshell.server.port=9000
,我在一个分布式设置中遇到了这个错误,其中beanshell服务器在主节点和从节点上运行,所有节点都使用相同的jmeter.properties配置:
从主节点jmeter.properties中删除这些行后,错误消失。您的jmeter版本是什么?我的jmeter版本是3.1 R1770033,这可能是一个错误。但您能否检查最新的3.3版本并共享您的测试计划或您正在使用的插件?请尝试jmeterengine.force.system.exit=true。这个问题是重复的。我在这里补充了我对重复问题的答案:添加这些行是导致甲烷储存出现问题的原因。我将暂停时间设置为11000毫秒,现在“并发线程组”的暂停时间正常。
jmeterengine.stopfail.system.exit=true
beanshell.server.port=9000
beanshell.server.file=../extras/startup.bsh