0

I'm doing remote testing on 2 slave machines on Linux in CLI mode. I have set the rmi ports as below on both Master and slave machines. I'm able to telnet to ports 8080/1099 from master-slave and vice versa. Firewall is opened for these ports.

jmeter.properties:client.rmi.localport=1099

jmeter.properties:server.rmi.localport=8080

I started the jmeter-server on both master and slave nodes

   ./jmeter-server -Djava.rmi.server.hostname=10.132.89.172 (Master)
   ./jmeter-server -Djava.rmi.server.hostname=10.132.91.141 (Slave 1)
  ./jmeter-server -Djava.rmi.server.hostname=10.132.88.44 (Slave 2)

I tried to trigger test with the following command on Master node

jmeter -n -Jthreads=10 -Jrampup=30 -Jduration=60 -Jiterations=-1 -t sampletest.jmx -R 10.132.91.141,10.132.88.44 -Djava.rmi.server.hostname=10.132.89.172 -Dclient.rmi.localport=1099

I get the following issues.

  1. After it logs "Starting distributed test with remote engines" on master noder, it takes about 10 or so mintues to log "Starting the test on host 10.132.91.141" and also there is lot of delay in start triggering the requests on Slave 1 and lot more delay to start on Slave 2.

  2. On the Slave nodes (jmet-server.log), I see Connection refused errors to Master node. java.rmi.ConnectException: Connection refused to host: 10.132.89.172

  3. Memory usgage on Slave nodes keep shooting up and results in OutOfMemory errors even after changing HEAP to xmx10g.

  4. Master node is stuck at this step and never comes back.

    Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445

Appreciate any input to resolve the issues.

Masud Jahan
  • 3,418
  • 2
  • 22
  • 35
user1829449
  • 59
  • 11

1 Answers1

1

Do not run jmeter-server on master machine.

You can follow these steps below:

  • Add your slave machine IP's (10.132.91.141, 10.132.88.44) to the jmeter.properties file.

    remote_hosts= 10.132.91.141, 10.132.88.4

  • Add the following to each slave machines jmeter-server file:

    RMI_HOST_DEF=-Djava.rmi.server.hostname= ip_of_jmeter_server

  • Start jmeter-server from those two slave machines

    ./jmeter-server

  • Run your test from the master machine as

    jmeter -n -Gthreads=10 -Grampup=30 -Gduration=60 -Giterations=-1 -t sampletest.jmx -r

Use -G flag for Jmeter property to be sent to all remote servers. Check the documentation on Overriding Properties Via The Command Line

Double-check that you have fulfilled all the prerequisite to perform Distributed test:

All machines(Master & Slaves) are in the same subnet.
The firewall is disabled for all machines.
JMeter and JDK versions are the same for all machines.
Masud Jahan
  • 3,418
  • 2
  • 22
  • 35
  • Thanks for the reply. I tried this but nothing seems to change except it made few requests (10 per slave). Not what is causing more than 10 mins of latency for every step and connection refused issue from Slave to Master (Not sure which port this communication happens). – user1829449 Jun 19 '20 at 14:53
  • It worked after disabling the firewall on all the nodes.. but I notice strange number of TPS in the summary for one of the entry summary+ 171 in 00:00:00 8142.9/s Avg: 6964 Min: 883 Max: 29309 – user1829449 Jun 19 '20 at 16:18
  • I'm glad it worked! Disabling the firewall is a prerequisite to perform a Distributed test. You should ask another question for the TPS observation. Thanks. – Masud Jahan Jun 20 '20 at 10:01
  • 1
    I did post another question regarding TPS. Thanks for all your help – user1829449 Jun 21 '20 at 23:50