<!DOCTYPE html SYSTEM "about:legacy-compat">
<html lang="en">
<head>
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<title>Apache JMeter
          -
          Apache JMeter Distributed Testing Step-by-step</title>
<meta name="author" value="JMeter developers">
<meta name="email" value="dev@jmeter.apache.org">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://fonts.googleapis.com/css?family=Merriweather:400normal" rel="stylesheet" type="text/css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="../css/new-style.css">
<link rel="apple-touch-icon-precomposed" href="../images/apple-touch-icon.png">
<link rel="icon" href="../images/favicon.png">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="../images/mstile-144x144.png">
<meta name="theme-color" content="#ffffff">
</head>
<body role="document">
<a href="#content" class="hidden">Main content</a>
<div class="header">
<!--
            APACHE LOGO
          -->
<div>
<a href="https://www.apache.org"><img title="Apache Software Foundation" class="asf-logo logo" src="../images/asf-logo.svg" alt="Logo ASF"></a>
</div>
<!--
              PROJECT LOGO
            -->
<div>
<a href="https://jmeter.apache.org/"><img class="logo" src="../images/logo.svg" alt="Apache JMeter"></a>
</div>
<div class="banner">
<a href="https://www.apache.org/events/current-event.html"><img src="https://www.apache.org/events/current-event-234x60.png" alt="Current Apache event teaser"></a>
<div class="clear"></div>
</div>
</div>
<div class="nav">
<ul class="menu">
<li onClick="return true">
<div class="menu-title">About</div>
<ul>
<li>
<a href="../index.html">Overview</a>
</li>
<li>
<a href="https://www.apache.org/licenses/">License</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Download</div>
<ul>
<li>
<a href="../download_jmeter.cgi">Download Releases</a>
</li>
<li>
<a href="../changes.html">Release Notes</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Documentation</div>
<ul>
<li>
<a href="../usermanual/get-started.html">Get Started</a>
</li>
<li>
<a href="../usermanual/index.html">User Manual</a>
</li>
<li>
<a href="../usermanual/best-practices.html">Best Practices</a>
</li>
<li>
<a href="../usermanual/component_reference.html">Component Reference</a>
</li>
<li>
<a href="../usermanual/functions.html">Functions Reference</a>
</li>
<li>
<a href="../usermanual/properties_reference.html">Properties Reference</a>
</li>
<li>
<a href="../changes_history.html">Change History</a>
</li>
<li>
<a href="../api/index.html">Javadocs</a>
</li>
<li>
<a href="https://cwiki.apache.org/confluence/display/JMETER/Home">JMeter Wiki</a>
</li>
<li>
<a href="https://cwiki.apache.org/confluence/display/JMETER/JMeterFAQ">FAQ (Wiki)</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Tutorials</div>
<ul>
<li>
<a href="../usermanual/jmeter_distributed_testing_step_by_step.html">Distributed Testing</a>
</li>
<li>
<a href="../usermanual/jmeter_proxy_step_by_step.html">Recording Tests</a>
</li>
<li>
<a href="../usermanual/junitsampler_tutorial.html">JUnit Sampler</a>
</li>
<li>
<a href="../usermanual/jmeter_accesslog_sampler_step_by_step.html">Access Log Sampler</a>
</li>
<li>
<a href="../usermanual/jmeter_tutorial.html">Extending JMeter</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Community</div>
<ul>
<li>
<a href="../issues.html">Issue Tracking</a>
</li>
<li>
<a href="https://www.apache.org/security/">Security</a>
</li>
<li>
<a href="../mail.html">Mailing Lists</a>
</li>
<li>
<a href="../svnindex.html">Source Repositories</a>
</li>
<li>
<a href="../building.html">Building and Contributing</a>
</li>
<li>
<a href="https://projects.apache.org/project.html?jmeter">Project info at Apache</a>
</li>
<li>
<a href="https://cwiki.apache.org/confluence/display/JMETER/JMeterCommitters">Contributors</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Foundation</div>
<ul>
<li>
<a href="https://www.apache.org/">The Apache Software Foundation (ASF)</a>
</li>
<li>
<a href="https://www.apache.org/foundation/getinvolved.html">Get Involved in the ASF</a>
</li>
<li>
<a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
</li>
<li>
<a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
</li>
</ul>
</li>
</ul>
</div>
<div class="main" id="content">
<div class="social-media">
<ul class="social-media-links">
<li class="twitter">
<a href="https://twitter.com/ApacheJMeter" title="Follow us on Twitter"><i class="fa fa-twitter" aria-hidden="true"></i>Twitter</a>
</li>
<li class="github">
<a href="https://github.com/apache/jmeter" title="Fork us on github"><i class="fa fa-github" aria-hidden="true"></i>github</a>
</li>
</ul>
</div>
<ul class="pagelinks">
<li>
<a href="../index.html">Index</a>
</li>
<li>
<a href="jmeter_proxy_step_by_step.html">Next &gt;</a>
</li>
</ul>
<div class="section">
<h1 id="distributed-testing">25. Apache JMeter Distributed Testing Step-by-step<a class="sectionlink" href="#distributed-testing" title="Link to here">&para;</a>
</h1>


<p>
This short tutorial explains how to use multiple systems to perform stress testing. Before we start, there are a couple of things to check.
</p>


<ul>
  
<li>the firewalls on the systems are turned off or correct ports are opened.</li>
  
<li>all the clients are on the same subnet.</li>
  
<li>the server is in the same subnet, if <span class="code">192.x.x.x</span> or <span class="code">10.x.x.x</span> IP addresses are used.
      If the server doesn't use <span class="code">192.xx</span> or <span class="code">10.xx</span> IP address, there shouldn't be any problems.</li>
  
<li>Make sure JMeter can access the server.</li>
  
<li>Make sure you use the same version of JMeter and Java on all the systems. Mixing versions will not work correctly.</li>
  
<li>You have <a href="remote-test.html#setup_ssl">setup SSL for RMI</a> or disabled it.</li>

</ul>


<p>
Once you've made sure the systems are ready, it's time to setup remote testing. The tutorial assumes you already
have JMeter installed on all the systems. The way JMeter works is one controller node initiates the test on multiple worker nodes.
</p>


<div class="clear"></div>
<div class="note">In this tutorial we use GUI Mode just for demonstration. In real life you should use CLI mode (NON GUI) to start your load test</div>
<div class="clear"></div>


<figure>
<a href="../images/screenshots/distributed-jmeter.svg"><img src="../images/screenshots/distributed-jmeter.svg" width="610" height="462" alt="One controller node with multiple worker nodes"></a>
<figcaption>One controller node with multiple worker nodes</figcaption>
</figure>


<div class="subsection">
<h2 id="terminology">25.1 Terminology<a class="sectionlink" href="#terminology" title="Link to here">&para;</a>
</h2>


<p>
Before we dive into the step-by-step instructions, it's a good idea to define the terms and make sure the definition is clear.
</p>


<dl>
  
<dt>Controller Node</dt>
<dd>the system running JMeter GUI, which controls the test</dd>
  
<dt>Worker Node</dt>
<dd>the system running <span class="code">jmeter-server</span>, which takes commands from
      the GUI and send requests to the target system(s)</dd>
  
<dt>Target</dt>
<dd>the webserver we plan to stress test</dd>

</dl>


<figure>
<a href="../images/screenshots/distributed-names.svg"><img src="../images/screenshots/distributed-names.svg" width="602" height="360" alt="Categories of systems"></a>
<figcaption>Categories of systems</figcaption>
</figure>


</div>


<div class="subsection">
<h2 id="step-by-step">25.2 Step-by-Step<a class="sectionlink" href="#step-by-step" title="Link to here">&para;</a>
</h2>


<ol>
  
<li>On the worker nodes, go to <span class="code">jmeter/bin</span> directory and execute
     <span class="code">jmeter-server.bat</span> (<span class="code">jmeter-server</span> on unix).
  </li>
  
<li>On controller node acting as the console, open windows explorer and go to
      <span class="code">jmeter/bin</span> directory</li>
  
<li>Open <span class="code">jmeter.properties</span> in a text editor</li>
  
<li>Edit the line <span class="code">remote_hosts=127.0.0.1</span>
</li>
  
<li>Add the IP address. For example, if I have JMeter server running on <span class="code">192.168.0.10</span>,
    &hellip;, <span class="code">192.168.0.15</span>, the entry would look like this:
    <pre class="source">remote_hosts=192.168.0.10,192.168.0.11,192.168.0.12,192.168.0.13,192.168.0.14</pre>
  
</li>
  
<li>Start JMeter.</li>
  
<li>Open the test plan you want to use</li>

</ol>


<figure>
<a href="../images/screenshots/example-simple-plan.png"><img src="../images/screenshots/example-simple-plan.png" width="483" height="266" alt="Simple test plan"></a>
<figcaption>Simple test plan</figcaption>
</figure>


</div>


<div class="subsection">
<h2 id="starting">25.2 Starting the Test<a class="sectionlink" href="#starting" title="Link to here">&para;</a>
</h2>


<p>
At this point, you are ready to start load testing. If you want to double check
the worker nodes are working, open <span class="code">jmeter.log</span> in your editor. You should see the following in the log.
</p>


<pre class="source">
Writing log file to: /XXXX/XXXXX/bin/jmeter-server.log
Created remote object: UnicastServerRef [liveRef: [endpoint:[192.X.X.X:XXXXX](local),objID:[-6a665beb:15a2c8b9419:-7fff, 3180474504933847586]]]
</pre>


<p>
If you do not see this message, it means <span class="code">jmeter-server</span> did not start correctly. For tips on
debugging the issue, <a href="#tips">go to the tips section</a>. There are two ways to
initiate the test: a single system and all systems.
</p>


</div>


<div class="subsection">
<h2 id="start-single-client">25.3 Start a single clients<a class="sectionlink" href="#start-single-client" title="Link to here">&para;</a>
</h2>


<ol>
  
<li>Click Run at the top</li>
  
<li>Select Remote Start</li>
  
<li>Select the IP address</li>

</ol>


<figure>
<a href="../images/screenshots/example-remote-start.png"><img src="../images/screenshots/example-remote-start.png" width="490" height="196" alt="Start a single worker node"></a>
<figcaption>Start a single worker node</figcaption>
</figure>


</div>


<div class="subsection">
<h2 id="start-all-clients">25.4 Start all clients<a class="sectionlink" href="#start-all-clients" title="Link to here">&para;</a>
</h2>


<ol>
  
<li>Click Run at the top</li>
  
<li>Select Remote Start all or use <span class="keycombo"><span class="keysym">Ctrl</span>&nbsp;+&nbsp;<span class="keysym">Shift</span>&nbsp;+&nbsp;<span class="keysym">R</span></span>
</li>

</ol>


<figure>
<a href="../images/screenshots/example-remote-start-all.png"><img src="../images/screenshots/example-remote-start-all.png" width="410" height="155" alt="Start all worker nodes"></a>
<figcaption>Start all worker nodes</figcaption>
</figure>


</div>


<div class="subsection">
<h2 id="limitations">25.5 Limitations<a class="sectionlink" href="#limitations" title="Link to here">&para;</a>
</h2>


<p>
There are some basic limitations for distributed testing. Here's the list of the known items in no specific order.
</p>


<ol>
  
<li>RMI cannot communicate across subnets without a proxy; therefore neither can JMeter without a proxy.</li>
  
<li>Since version 2.9, JMeter sends all the test results stripping Response data to the controlling console, this allows
      us to reduce impact on network IO. Ensure you monitor your network traffic so that this traffic does not incur contention</li>
  
<li>A single JMeter client running on a 2-3 GHz CPU (recent CPU) can handle 1000-2000 threads depending on the type of test.</li>

</ol>


</div>


<div class="subsection">
<h2 id="additional-resources">25.6 Additional resources<a class="sectionlink" href="#additional-resources" title="Link to here">&para;</a>
</h2>


<p>
  
<a href="https://cwiki.apache.org/confluence/display/JMETER/JMeterFAQ#JMeterFAQ-Howtodoremotetestingthe'properway'?">Wiki page on remote testing</a>

</p>


<p>
  
<a href="remote-test.html">Remote Testing in the user manual</a>

</p>


</div>


<div class="subsection">
<h2 id="tips">25.7 Tips<a class="sectionlink" href="#tips" title="Link to here">&para;</a>
</h2>


<p>
In some cases, the firewall may still be blocking RMI traffic.
</p>


<h3>Anti Virus and Firewall</h3>


<div class="clear"></div>
<div class="note">Antivirus should be stopped during a Load Test as it can drastically impact timings leading to wrong results.</div>
<div class="clear"></div>

<p>
Firewall needs to be stopped from windows services or at least some ports need to be opened.
</p>


<ol>
  
<li>Open control panel</li>
  
<li>Open administrative tools</li>
  
<li>Double click services</li>
  
<li>Go to down to Symantec anti virus, right click and select stop</li>

</ol>


<h3>Windows firewall</h3>


<ol>
  
<li>Open network connections</li>
  
<li>Select the network connection</li>
  
<li>Right click and select properties</li>
  
<li>Select advanced tab</li>
  
<li>Uncheck internet connection firewall</li>

</ol>


<h3>Linux</h3>


<p>
On Linux, iptables might be turned on by default. For instructions, please refer to the
  <a href="remote-test.html">Remote Testing in the user manual</a>

</p>


<p>
On RedHat (or derivatives), iptables is turned on by default. Execute
<pre class="source">service iptables stop</pre>
to stop the Linux firewall or ensure you open the correct ports.
</p>


</div>


</div>
<ul class="pagelinks">
<li>
<a href="../index.html">Index</a>
</li>
<li>
<a href="jmeter_proxy_step_by_step.html">Next &gt;</a>
</li>
</ul>
<div class="share-links">
      Share this page:
      <ul>
<li class="fb">
<a data-social-url="https://facebook.com/sharer/sharer.php?u=" title="Share on facebook"><i class="fa fa-facebook" aria-hidden="true"></i>share</a>
</li>
<li class="twitter">
<a data-social-url="https://twitter.com/intent/tweet?url=" title="Tweet on twitter"><i class="fa fa-twitter" aria-hidden="true"></i>tweet</a>
</li>
</ul>
</div>
<a href="#top" id="topButton">Go to top</a>
</div>
<div class="footer">
<div class="copyright">
            Copyright &copy;
            1999 &ndash;
            2021
            , Apache Software Foundation
          </div>
<div class="trademarks">Apache, Apache JMeter, JMeter, the Apache
            feather, and the Apache JMeter logo are
            trademarks of the
            Apache Software Foundation.
          </div>
</div>
<script>(function(){
            "use strict";
            // enable 'go to top' button functionality
            document.addEventListener('scroll', function() {
                if (document.body.scrollTop > 500 || document.documentElement.scrollTop > 500) {
                    document.getElementById("topButton").style.display = "block";
                } else {
                    document.getElementById("topButton").style.display = "none";
                }
            });
            // fill in the current location into social links on this page.
            var as = document.getElementsByTagName('a');
            var loc = document.location.href;
            if (!loc.toLowerCase().startsWith('http')) {
                return;
            }
            for (var i=0; i<as.length; i++) {
                var href = as[i].getAttribute('data-social-url');
                if (href !== null) {
                    as[i].href = href + encodeURIComponent(loc);
                }
            }
        })();</script>
</body>
</html>
