JMeter Distributed Testing: Step by Step
While managing multiple systems or machines, it becomes essential to create an arrangement for streamlined communication and operation. You need to figure out ways so that the slaves can interact with the master with a firewall in place.
Obviously, there are tons of ways if you search the use of JMeter for distributed testing. But before that, it is important to understand Distributed Testing and its associated approach.
Introduction to Distributed Testing
Consider the case when you have a slave conducting a test on a single machine that is also used by the master. This is termed as a Non-Distributed testing approach. However, the concept of Distributed testing involves a test script that is executed on separate computers. It is necessary to understand that all machines which are part of a Distributed Testing environment have to be well coordinated. It is the responsibility of the master node to manage this arrangement whereas the slaves are provided a copy of the test script copy to execute the load and finally report real-time results to the master.
Pre-Requisites for Distributed Testing
For distributed testing using JMeter, we need to make some specific configurations both on the Master as well as the Slave machines.
Basic Requirements that both Master and the Slaves machines should have in common:
- Same Java version
- Same JMeter version (It’s better to copy the JMeter from one machine to the rest of all)
- All machines should be on the same subnet
This doc will give you a brief idea about doing Distributed Remote testing using a Windows machine as the master and Linux machines as slaves.
Slave Configuration
After having a similar copy of JMeter in the slaves, follow the below steps for all the Slave machines:
1) Open JMeter-server file present in the bin directory of JMeter and uncomment the below line –
RMI_HOST_DEF=-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx
Also instead of xxx.xxx.xxx.xxx, give the ip of the linux machine you have opened.
2) Give a specific rmi port no. in the below line of the same JMeter-server file –
${DIRNAME}/jmeter ${RMI_HOST_DEF} -Dserver_port=${SERVER_PORT:-2010} -s -j jmeter-server.log “$@”
This port will be further used in the master configuration, hence give different ports for all the different slave machines.
3) After making the above changes, execute JMeter-server on all the slaves.
Master Configuration
The following changes need to be done for the master setup:
1) Open jmeter.properties present in the bin directory on the Master machine and mention all the slave ips in as remote hosts with the ports assigned in the above slave configuration –
remote_hosts=localhost: 1099, 104.239.234.143:2010
Localhost need not be mentioned if you do not want to use the Master machine to be a part of remote testing to put the load on the application.
2) Set the server port in the same JMeter.properties file
-server_port=1099
3) After making the above changes, execute jmeter-server.bat on your Windows master machine which will be present in the bin directory.
4) Now execute jmeter.bat on the Master machine for your JMeter GUI where the execution will be done and viewed.
Please note that the number of Virtual Users that will be assigned in the thread group in your JMeter GUI, an equal number of users will be generated from each of the machines you are using. For e.g.: let’s say we have one Windows as the master and two Linux machines as the slaves and the VUsers assigned is 10, then a total of 30 users will be making hits on the application under test.
Execution Methods
After doing the slave and master setup, open the scenario to be executed and execute in any of the 2 below methods:
1) Go to Run->Remote Start All. You can also Go to Run->Remote Start and select any one of the machines you wish to generate load.
2) On the top panel, we have a button for the remote start (After the test has completed, c lick on the button beside in red to remote stop all)
Exceptions and Workarounds
“Connection refused” is a common error that we encounter during remote distributed testing. For this, one should try the below checks:
1) Make sure the remote host entries and the ports assigned both on the master and slave are correct. Also, JMeter-server should be executed first followed by the JMeter-server.bat and jmeter.bat on the Master machine.
2) Verify the firewall settings on Windows and Linux machines. Disable if required. On Linux, that can be achieved by the below command:
JMeter distributed testing has been comprehensively listed in this write-up keeping in mind important factors such as JMeter master-slave configuration, execution methods, and exceptions. ImpactQA is a renowned software testing company that readily offers distributed testing with JMeter. The aim is to analyze system performance which is effectively managed by us with the help of JMeter distributed load testing.