Distributed Load Testing in JMeter

ApacheJMeter is open source desktop application tool designed to simulate a heavy load on a server, network or object to test its strength or to analyze overall performance under different load types. The reason of using more than one system for load testing is the limitation of single system to generate large number of requests, threads and users.

In JMeter this is achieved by creating a Master - Slave configuration. Distributed load testing is the process using which multiple systems are used for simulating load of large number of users. In a distributed setup there is one controller called master and number of slaves controlled by master.

Distributed load testing can be tricky and may produce incorrect results if not configured correctly. Test results depends on the following factors.
  1. Network bandwidth. 
  2. Master and Slave Systems configuration including memory, processor speed.
  3. Configuration of the load testing tool like number of users running in parallel. 
For distributed load testing we need to create Master-slave configuration using following steps where Master will control all the slaves and collect the test results.

Step 1: Points to remember
  1. Make sure that all the systems are running exactly the same version of Jmeter. Mixing versions may not work correctly.
  2. As far as possible, also use the same version of Java on all systems. Using different versions of Java may work-but is best avoided.
  3. To make the system work firewall needs to be turned off. 
  4. All the systems need to be in same Subnet. 
  5. If the test uses any data files, note that these are not sent across by the client so make sure that these are available in the appropriate directory on each server. If necessary you can define different values for properties by editing the user.properties or system.properties files on each server. These properties will be picked up when the server is started and may be used in the test plan to affect its behavior (Exa. Connecting to a different remote server). Alternatively use different content in any datafiles used by the test (e.g. if each server must use unique ids, divide these between the data files).
Step 2: Configure Slave Systems
    1. Go to Jmeter/bin folder and Open jmeter-server.bat in a Text Editor.
    2. Find “:setCP” and Edit “START rmiregistry” to the full path. Example: “START C:\j2sdk1.4.2\jre\bin\rmiregistry”
      Distributed Load Testing in JMeter
    1. Now Execute jmeter-server.bat (jmeterserver on unix).
    2. On windows, you should see a dos window appear with “jre\[version]\bin\rmiregistry.exe”. If this doesn't happen, it means either the environment settings are not right, or there are multiple JRE installed on the system. [version] would be the jre version installed on the system.
    Step 3: Configure Master Systems
    1. Master system will act as the console.
    2. Open windows explorer and go to jmeter/bin directory
    3. Open jmeter.properties in notepad or wordpad.
    4. Find the property named, "remote_hosts" and Edit the line “remote_hosts=127.0.0.1”. Add the Slave System's IP address where jmeter server is running.
      For example, If Jmeter server running on 192.168.0.1, 192.168.0.2, 192.168.0.3, 192.168.0.4 and 192.168.0.5 Slave Systems then the entry would like like this:
      remote_hosts=192.168.0.1,192.168.0.2,192.168.0.3,192.168.0.4,192.168.0.5

    Distributed Load Testing in JMeter
    1. Start jmeter file by executing jmeter.bat file.
    2. Open the test plan you want to use.
    3. You will notice that the Run menu contains two new sub-menus: "Remote Start" and "Remote Stop". These menus contain the client that you set in the properties file.
    4. To Execute script in all Slave Systems select “Remote Start All” option from the Run menu.

    Distributed Load Testing in JMeter












    Thanks & Regards,

    Prashant Vadher | QC Engineer

    0 Comments:

    Post a Comment

     
    Design by Prashant Vadher