Jmeter Distributed (Remote) Testing: Master Slave Configuration
What is Distributed Testing?
Distributed Testing is a kind of testing which use multiple systems to perform Stress Testing. Distributed testing is applied for testing websites and server applications when they are working with multiple clients simultaneously.
Distributes testing uses client-server model as the figure below:
- Master: the system running JMeter GUI, control each slave.
- Slave: the system running JMeter-server, receive a command from the master and send a request to a server under test.
- Target: the web server under test, get a request from slaves.
Remote Test Example
- The firewalls on the systems are turned off. In some cases, the firewall may still be blocking the traffic. You should disable the Window firewall or Linux firewall.
- All the machines should be on the same subnet. If machines are not on the same subnet, maybe they will not recognize each other in the network.
- Use the same version of JMeter to avoid unanticipated errors/issues.
Here is the roadmap for this testing:
Step 1) System configuration
Setup slave systems, go to jmeter/bin directory and execute file "jmeter-server.bat".
Assume that a slave machine has IP address: 192.168.0.10. On windows, you should see a window appear like the following figure:
On the master systems, go to /bin directory and edit file jmeter.properites, add IP slave machine as below
Step 2) Run the test
At this point, you are ready to start load testing. On the master machine, run JMeter GUI and open the test plan.
Click Run on the menu bar; select Remote start -> select the IP address of slave machine
Step 3) Troubleshooting
If you are unable to run test form the above machine and see below error, simply ask an owner of a slave machine to run the JMeter-server.bat File.
Disable Firewall on both master and slave machines to fix this error.
There are some basic limitations for distributed testing. Here's list of the known items:
- Server and all clients must be on the same subnet.
- Distributed testing required target server to have the large processing power. The target Server could be easily overloaded in case it gets too many requests by distributed JMeter tests.
- A single JMeter can only handle a limited number of threads (100- 300 threads).
- The distributed JMeter tests are complex, difficult for a beginner to build.