JVM应该已经退出但没有退出

问题描述 投票:1回答:1

在非gui模式下使用Jmeter 3.3进行分布式测试期间我遇到错误,我该如何解决这个问题:

我在Master和Slave机器上使用相同版本的JMeter和JDK。

JVM应该已经退出但没有退出。以下非守护程序线程仍在运行(DestroyJavaVM没问题):Thread [main,5,main],

stackTrace:java.net.SocketInputStream#socketRead0
java.net.SocketInputStream#socketRead
java.net.SocketInputStream#read
java.net.SocketInputStream#read
java.io.BufferedInputStream#fill
java.io.BufferedInputStream#read
java.io.DataInputStream#readByte
sun.rmi.transport.StreamRemoteCall#executeCall
sun.rmi.server.UnicastRef#invoke
java.rmi.server.RemoteObjectInvocationHandler#invokeRemoteMethod
java.rmi.server.RemoteObjectInvocationHandler#invoke
com.sun.proxy.$Proxy19#rrunTest
org.apache.jmeter.engine.ClientJMeterEngine#runTest at line:149
org.apache.jmeter.engine.DistributedRunner#start at line:132
org.apache.jmeter.engine.DistributedRunner#start at line:149
org.apache.jmeter.JMeter#runNonGui at line:1005
org.apache.jmeter.JMeter#startNonGui at line:910
org.apache.jmeter.JMeter#start at line:538
sun.reflect.NativeMethodAccessorImpl#invoke0
sun.reflect.NativeMethodAccessorImpl#invoke
sun.reflect.DelegatingMethodAccessorImpl#invoke
java.lang.reflect.Method#invoke
org.apache.jmeter.NewDriver#main at line:248
jmeter jvm performance-testing load-testing distributed
1个回答
1
投票

很可能您的JMeter引擎已经过载,因此当您请求它们时,无法正常关闭正在运行的线程。

  1. 请务必关注JMeter Best Practices
  2. 第一个“最佳实践”陈述Always use latest version of JMeter所以考虑迁移到JMeter 5.0JMeter Downloads页面提供的任何最新版本
  3. 确保您的JMeter实例具有足够的空间来运行CPU,RAM等。如果您没有其他监控软件,可以使用JMeter PerfMon Plugin
  4. 拿一个thread dump并检查它 - 这样你就会知道你的测试到底在哪里
  5. HTTP Request Defaults中引入合理的超时值,以便在服务器无法响应的情况下,JMeter不会无限期等待,而是会因错误而失败 JMeter HTTP Request Defaults
  6. 最后(但我不推荐这个)你可以通过在user.properties文件中添加下一行来suppress this checkjmeter.exit.check.pause=-1 如果你这样做,请记住,即使在测试结束后,JMeter从属设备仍然会尝试执行某些操作,因此您需要手动或使用脚本终止并重新启动进程。
© www.soinside.com 2019 - 2024. All rights reserved.