我正在尝试使用JMeter 5.1.1进行分布式测试。我使用了here中的手册,但是在指定用于从服务器(从属)到客户端(主)的连接的端口时遇到了问题。当我使用client.rmi.localport
时
在主服务器上的jmeter.properties
中,出现以下错误:
错误o.a.j.u.JMeterUtils:rconfigure()方法中的错误 java.rmi.MarshalException:错误编组参数;嵌套的 异常是:java.io.NotSerializableException: org.apache.jmeter.JMeter $ ListenToTest
我能够用其他端口进行管理,只有这一点给我带来麻烦。 我正在使用nonGUI模式。 如何修复此/指定端口?
来自主服务器的日志:
[...]
错误o.a.j.e.ConvertListeners:RemoteException发生在 替换可移动项。 java.rmi.server.ExportException:侦听 端口失败:4453;嵌套的异常是:java.io.IOException: 无法使用端口4453绑定到XXX / XXX.XXX.XXX.XXX
[...]
原因: java.io.IOException:无法使用端口绑定到XXX / XXX.XXX.XXX.XXX 在4453 org.apache.jmeter.rmi.SSLRMIServerSocketFactory.createServerSocket(SSLRMIServerSocketFactory.java:139) 〜[ApacheJMeter_core.jar:5.1.1 r1855137]在 sun.rmi.transport.tcp.TCPEndpoint.newServerSocket(未知来源) 〜[?:1.8.0_231] ... 22更多原因:java.net.BindException:地址 已经在使用:JVM_Bind
[...]
错误o.a.j.e.ClientJMeterEngine:错误 在rconfigure()方法java.rmi.MarshalException中:错误编组 参数;嵌套的异常是:java.io.NotSerializableException: org.apache.jmeter.JMeter $ ListenToTest位于 sun.rmi.server.UnicastRef.invoke(未知来源)〜[?:1.8.0_231]
[...]
master上的jmeter.properties:
[...]
remote_hosts = XXX.XXX.XXX.XXX:4454
[...]
client.rmi.localport = 4451
[...]
jmeterengine.nongui.port = 4448
[...]
编辑: 由于注释存在问题,已将JMeter更改为5.2版。
答案 0 :(得分:0)
此错误:
Address already in use: JVM_Bind
清楚地表明Java尝试使用该进程或另一个进程使用的特定network port,请考虑使用netstat程序来标识持有端口的进程,然后终止该进程或选择另一个进程港口。
请注意,RemoteThreadsListenerImpl使用了一些offset,因此实际端口将高于通过属性指定的端口。
不幸的是,不清楚要在JMeter Master和Slave机器上使用哪个端口,因此与此同时,我只能建议您熟悉以下材料:
后一个示例提供了使用自定义端口进行结果转发的示例。
答案 1 :(得分:0)
禁用客户端和服务器之间的安全通道对我有帮助-我不再遇到此错误,可以指定端口。但是,我建议仅在您的环境(客户端和服务器)都在专用网络中工作时才这样做。