Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Running multiple jmeter-server on same host

I want to run JMeter in distributed manner. My requirement is such that there should be multiple jmeter-server processes running on my slave machines. In order to do so I ran below commands.

./jmeter-server -Djava.rmi.server.hostname=XX.XX.X.XXX -Dserver.rmi.localport=60001

./jmeter-server -Djava.rmi.server.hostname=XX.XX.X.XXX -Dserver.rmi.localport=60001

Each time I run this command I see below messages on the console. Same error is for port 60002

Created remote object: UnicastServerRef2 [liveRef: [endpoint:[XX.XX.X.XXX:60001](local),objID:[-823e97d:171c37a0bf7:-7fff, -7549432026360676360]]]


Created remote object: UnicastServerRef2 [liveRef: [endpoint:[XX.XX.X.XXX:60002](local),objID:[7b7158d6:171c37bd76f:-7fff, 2942891814894680180]]]

On the master, the remote server are configured as XX.XX.X.XXX:60001 and XX.XX.X.XXX:60002. But each time I run the test I get below error.

2020-04-29 01:26:03,052 ERROR o.a.j.e.DistributedRunner: Failed to create engine at XX.XX.X.XXX:60001
java.rmi.NoSuchObjectException: no such object in table
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:283) ~[?:1.8.0_212]
    at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:260) ~[?:1.8.0_212]
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:375) ~[?:1.8.0_212]
    at sun.rmi.registry.RegistryImpl_Stub.lookup(RegistryImpl_Stub.java:119) ~[?:1.8.0_212]
    at org.apache.jmeter.engine.ClientJMeterEngine.getEngine(ClientJMeterEngine.java:70) ~[ApacheJMeter_core.jar:4.0 r1823414]
    at org.apache.jmeter.engine.ClientJMeterEngine.<init>(ClientJMeterEngine.java:83) ~[ApacheJMeter_core.jar:4.0 r1823414]
    at org.apache.jmeter.engine.DistributedRunner.createEngine(DistributedRunner.java:237) ~[ApacheJMeter_core.jar:4.0 r1823414]
    at org.apache.jmeter.engine.DistributedRunner.getClientEngine(DistributedRunner.java:213) [ApacheJMeter_core.jar:4.0 r1823414]
    at org.apache.jmeter.engine.DistributedRunner.init(DistributedRunner.java:93) [ApacheJMeter_core.jar:4.0 r1823414]
    at org.apache.jmeter.JMeter.runNonGui(JMeter.java:1011) [ApacheJMeter_core.jar:4.0 r1823414]
    at org.apache.jmeter.JMeter.startNonGui(JMeter.java:915) [ApacheJMeter_core.jar:4.0 r1823414]
    at org.apache.jmeter.JMeter.start(JMeter.java:543) [ApacheJMeter_core.jar:4.0 r1823414]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_212]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_212]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_212]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_212]
    at org.apache.jmeter.NewDriver.main(NewDriver.java:245) [ApacheJMeter.jar:4.0 r1823414]
2020-04-29 01:26:03,056 ERROR o.a.j.u.JMeterUtils: no such object in table
2020-04-29 01:26:03,056 INFO o.a.j.e.DistributedRunner: Failed to configure XX.XX.X.XXX:60001
2020-04-29 01:26:03,056 INFO o.a.j.e.DistributedRunner: Stopping remote engines
2020-04-29 01:26:03,056 INFO o.a.j.e.DistributedRunner: Remote engines have been stopped
2020-04-29 01:26:03,056 ERROR o.a.j.JMeter: Error in NonGUIDriver
java.lang.RuntimeException: Following remote engines could not be configured:[XX.XX.X.XXX:60001]
    at org.apache.jmeter.engine.DistributedRunner.init(DistributedRunner.java:112) ~[ApacheJMeter_core.jar:4.0 r1823414]
    at org.apache.jmeter.JMeter.runNonGui(JMeter.java:1011) [ApacheJMeter_core.jar:4.0 r1823414]
    at org.apache.jmeter.JMeter.startNonGui(JMeter.java:915) [ApacheJMeter_core.jar:4.0 r1823414]
    at org.apache.jmeter.JMeter.start(JMeter.java:543) [ApacheJMeter_core.jar:4.0 r1823414]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_212]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_212]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_212]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_212]
    at org.apache.jmeter.NewDriver.main(NewDriver.java:245) [ApacheJMeter.jar:4.0 r1823414]

I have checked and port 1099, 60001 and 60002 are open for all TCP as well as UDP traffic.

Can someone please help?

like image 255
Abhiram Avatar asked Nov 30 '25 03:11

Abhiram


1 Answers

Run servers this way:

jmeter -Dserver_port=60001 -s -j jmeter-server1.log -Djava.rmi.server.hostname=XX.XX.X.XXX


jmeter -Dserver_port=60002 -s -j jmeter-server1.log -Djava.rmi.server.hostname=XX.XX.X.XXX

Then controller this way:

jmeter -R -Jremote_hosts=XX.XX.X.XXX:60001,XX.XX.X.XXX:60002 -n -t Testplan.jmx -l results.csv -e -o reportfolder

Read this tutorial for more details.

If you're looking to learn jmeter correctly, this book will help you.

like image 93
UBIK LOAD PACK Avatar answered Dec 03 '25 08:12

UBIK LOAD PACK



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!