JMeter 分布式测试将无法完成

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

我正在使用 JMeter 运行应用程序的分布式测试。从属设备是两台来自 azure 的计算机,每台计算机具有 320GB RAM。 .bat 文件中的堆增加到 284GB。

对 100 个用户运行测试时,没有任何问题。当使用 1000 个用户运行测试时,所有线程都正确启动,多个进程已完成(我检查了我的数据库),但没有线程完成(请参见命令提示符中的图像)。这种状态持续了至少2个小时,我才强行结束了测试。 Screenshot of the commandprompt when running the test for 1000 users

这是来自 slace 机器的 jmeter.server.txt 文件的日志片段:

java.rmi.ConnectException: Connection refused to host: 10.0.0.4; nested exception is: 
    java.net.ConnectException: Connection refused: connect
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source) ~[?:1.8.0_401]
    at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source) ~[?:1.8.0_401]
    at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source) ~[?:1.8.0_401]
    at sun.rmi.server.UnicastRef.invoke(Unknown Source) ~[?:1.8.0_401]
    at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(Unknown Source) ~[?:1.8.0_401]
    at java.rmi.server.RemoteObjectInvocationHandler.invoke(Unknown Source) ~[?:1.8.0_401]
    at com.sun.proxy.$Proxy20.processBatch(Unknown Source) ~[?:?]
    at org.apache.jmeter.samplers.BatchSampleSender.sampleOccurred(BatchSampleSender.java:182) [ApacheJMeter_core.jar:5.6.3]
    at org.apache.jmeter.samplers.DataStrippingSampleSender.sampleOccurred(DataStrippingSampleSender.java:106) [ApacheJMeter_core.jar:5.6.3]
    at org.apache.jmeter.samplers.RemoteListenerWrapper.sampleOccurred(RemoteListenerWrapper.java:94) [ApacheJMeter_core.jar:5.6.3]
    at org.apache.jmeter.threads.ListenerNotifier.notifyListeners(ListenerNotifier.java:58) [ApacheJMeter_core.jar:5.6.3]
    at org.apache.jmeter.threads.JMeterThread.notifyListeners(JMeterThread.java:1042) [ApacheJMeter_core.jar:5.6.3]
    at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:591) [ApacheJMeter_core.jar:5.6.3]
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:501) [ApacheJMeter_core.jar:5.6.3]
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:268) [ApacheJMeter_core.jar:5.6.3]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_401]
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method) ~[?:1.8.0_401]
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) ~[?:1.8.0_401]
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) ~[?:1.8.0_401]
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) ~[?:1.8.0_401]
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source) ~[?:1.8.0_401]
    at java.net.PlainSocketImpl.connect(Unknown Source) ~[?:1.8.0_401]
    at java.net.SocksSocketImpl.connect(Unknown Source) ~[?:1.8.0_401]
    at java.net.Socket.connect(Unknown Source) ~[?:1.8.0_401]
    at java.net.Socket.connect(Unknown Source) ~[?:1.8.0_401]
    at java.net.Socket.<init>(Unknown Source) ~[?:1.8.0_401]
    at java.net.Socket.<init>(Unknown Source) ~[?:1.8.0_401]
    at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(Unknown Source) ~[?:1.8.0_401]
    at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(Unknown Source) ~[?:1.8.0_401]

我增加了堆大小。该脚本不包含侦听器,但是当从主机运行脚本时,我们会生成 HTML 报告和 csv 文件。 Server.rmi.ssl.disable 设置为 true 可以更轻松地在主从服务器之间建立连接。

jmeter master-slave distributed-testing
1个回答
0
投票

该错误意味着从站无法连接到主站以通知其测试完成并将结果发送回。

在大多数情况下,这是由于不正确的 RMI 配置造成的。我建议明确设置

client.rmi.localport
并确保端口在您的操作系统中打开 防火墙

此外,将堆设置为 250 GB 可能不是最好的主意,因为更大的堆意味着在 垃圾收集期间 会有更长的暂停时间,较新版本的 Java 足够智能,可以选择最佳堆大小。

更多信息:如何在 JMeter 中执行分布式测试

© www.soinside.com 2019 - 2024. All rights reserved.