如何在 JMeter 中修复 java.io.NotSerializableException: org.apache.jmeter.JMeter$ListenToTest?
How to fix java.io.NotSerializableException: org.apache.jmeter.JMeter$ListenToTest in JMeter?
我正在尝试使用 JMeter 5.1.1 进行分布式测试。我使用了 here 的手册,但在指定从服务器(从)到客户端(主)的连接端口时遇到问题。当我使用 client.rmi.localport
在 jmeter.properties
on master 中出现以下错误:
ERROR o.a.j.u.JMeterUtils: Error in rconfigure() method
java.rmi.MarshalException: error marshalling arguments; nested
exception is: java.io.NotSerializableException:
org.apache.jmeter.JMeter$ListenToTest
我可以用其他端口管理,只有这个给我带来麻烦。
我正在使用非 GUI 模式。
如何修复 this/specify 端口?
来自主人的日志:
[...]
ERROR o.a.j.e.ConvertListeners: RemoteException occurred while
replacing Remotable item. java.rmi.server.ExportException: Listen
failed on port: 4453; nested exception is: java.io.IOException:
Could not bind to XXX/XXX.XXX.XXX.XXX using port 4453
[...]
Caused by:
java.io.IOException: Could not bind to XXX/XXX.XXX.XXX.XXX using port
4453 at
org.apache.jmeter.rmi.SSLRMIServerSocketFactory.createServerSocket(SSLRMIServerSocketFactory.java:139)
~[ApacheJMeter_core.jar:5.1.1 r1855137] at
sun.rmi.transport.tcp.TCPEndpoint.newServerSocket(Unknown Source)
~[?:1.8.0_231] ... 22 more Caused by: java.net.BindException: Address
already in use: JVM_Bind
[...]
ERROR o.a.j.e.ClientJMeterEngine: Error
in rconfigure() method java.rmi.MarshalException: error marshalling
arguments; nested exception is: java.io.NotSerializableException:
org.apache.jmeter.JMeter$ListenToTest at
sun.rmi.server.UnicastRef.invoke(Unknown Source) ~[?:1.8.0_231]
[...]
jmeter.properties 主控:
[...]
remote_hosts=XXX.XXX.XXX.XXX:4454
[...]
client.rmi.localport=4451
[...]
jmeterengine.nongui.port=4448
[...]
编辑:
由于评论中的问题,将 JMeter 更改为 5.2 版。
这个错误:
Address already in use: JVM_Bind
清楚地表明 Java 试图使用特定的 network port which is used by this or another process, consider using netstat 程序来识别持有该端口的进程并终止该进程或选择另一个端口。
请注意 RemoteThreadsListenerImpl uses some offset 因此实际端口将高于您通过 属性 指定的端口。
不幸的是,您不太清楚要在 JMeter Master 和 Slave 机器上使用哪些端口,所以在此期间我只能建议熟悉以下资料:
后一个提供了使用自定义端口进行结果转发的示例。
禁用客户端和服务器之间的安全通道对我有帮助 - 我不再遇到此错误并且可以指定端口。但是,我建议仅当您的环境(客户端和服务器)在专用网络中工作时才这样做。
我正在尝试使用 JMeter 5.1.1 进行分布式测试。我使用了 here 的手册,但在指定从服务器(从)到客户端(主)的连接端口时遇到问题。当我使用 client.rmi.localport
在 jmeter.properties
on master 中出现以下错误:
ERROR o.a.j.u.JMeterUtils: Error in rconfigure() method java.rmi.MarshalException: error marshalling arguments; nested exception is: java.io.NotSerializableException: org.apache.jmeter.JMeter$ListenToTest
我可以用其他端口管理,只有这个给我带来麻烦。 我正在使用非 GUI 模式。 如何修复 this/specify 端口?
来自主人的日志:
[...]
ERROR o.a.j.e.ConvertListeners: RemoteException occurred while replacing Remotable item. java.rmi.server.ExportException: Listen failed on port: 4453; nested exception is: java.io.IOException: Could not bind to XXX/XXX.XXX.XXX.XXX using port 4453
[...]
Caused by: java.io.IOException: Could not bind to XXX/XXX.XXX.XXX.XXX using port 4453 at org.apache.jmeter.rmi.SSLRMIServerSocketFactory.createServerSocket(SSLRMIServerSocketFactory.java:139) ~[ApacheJMeter_core.jar:5.1.1 r1855137] at sun.rmi.transport.tcp.TCPEndpoint.newServerSocket(Unknown Source) ~[?:1.8.0_231] ... 22 more Caused by: java.net.BindException: Address already in use: JVM_Bind
[...]
ERROR o.a.j.e.ClientJMeterEngine: Error in rconfigure() method java.rmi.MarshalException: error marshalling arguments; nested exception is: java.io.NotSerializableException: org.apache.jmeter.JMeter$ListenToTest at sun.rmi.server.UnicastRef.invoke(Unknown Source) ~[?:1.8.0_231]
[...]
jmeter.properties 主控:
[...]
remote_hosts=XXX.XXX.XXX.XXX:4454
[...]
client.rmi.localport=4451
[...]
jmeterengine.nongui.port=4448
[...]
编辑: 由于评论中的问题,将 JMeter 更改为 5.2 版。
这个错误:
Address already in use: JVM_Bind
清楚地表明 Java 试图使用特定的 network port which is used by this or another process, consider using netstat 程序来识别持有该端口的进程并终止该进程或选择另一个端口。
请注意 RemoteThreadsListenerImpl uses some offset 因此实际端口将高于您通过 属性 指定的端口。
不幸的是,您不太清楚要在 JMeter Master 和 Slave 机器上使用哪些端口,所以在此期间我只能建议熟悉以下资料:
后一个提供了使用自定义端口进行结果转发的示例。
禁用客户端和服务器之间的安全通道对我有帮助 - 我不再遇到此错误并且可以指定端口。但是,我建议仅当您的环境(客户端和服务器)在专用网络中工作时才这样做。