How to send 4000+ requests in exactly 1 second?
<p>I have an <code>HTTP GET request</code>. I need to send the request to the application server for more than <code>4000</code> times exactly in 1 second.</p>
<p>I'm sending these requests using JMeter. I have taken ethereal traces every time for each test using a sniffer tool (<code>Wireshark</code>).</p>
<p>I have tried to achieve this from one machine, multiple machines (parallel) and even distributed mode.</p>
<p>Actually, JMeter results are not my concern here. The concern of this test is to see that <code>4000</code> requests are hitting the server in one second at the sniffer tool.</p>
<p>I have found almost <code>2500</code> request in <code>1 sec</code> in ethereal trace while using the following JMeter test plan.</p>
<pre><code>Number of Threads= 4000
Ramp-Up Periods = 0 (Though it is depricated)
Loop count= 1
</code></pre>
<p>When I use the number of threads as <code>2500</code>, I got almost <code>2200 request</code> hitting the server in one second in the ethereal trace.</p>
<p>Response from the server for that request is not my concern here. I just want to make sure that <code>4000</code> request sent by <code>JMeter</code> is hitting the application server in one second.</p>
<h2><strong>UPDATE:</strong></h2>
<p><strong>Case 1: (4000 Threads)</strong></p>
<pre><code>Number of Threads= 4000
Ramp-Up Periods = 0 
Loop count= 1
</code></pre>
<p><strong>Output for Case 1:</strong></p>
<blockquote>
<p><strong>JMeter (View Results in Table)</strong>: 2.225 seconds to start 4000 requests.</p>
<p><strong>Ethereal trace</strong>: 4.12 seconds for 4000 requests to hit the server.</p>
</blockquote>
<p><a href="https://i.stack.imgur.com/0rUUv.png" rel="noreferrer"><img src="https://i.stack.imgur.com/0rUUv.png" alt="enter image description here" /></a></p>
<p><strong>Case 2: (3000 Threads)</strong></p>
<blockquote>
<p><strong>JMeter (View Results in Table)</strong>: 1.83 seconds to start 3000 requests.</p>
<p><strong>Ethereal trace</strong>: 1.57 seconds for 3000 requests to hit the server.</p>
</blockquote>
<p><strong>Case 3: (2500 Threads)</strong></p>
<blockquote>
<p><strong>JMeter (View Results in Table)</strong>: 1.36 seconds to start 2500 requests.</p>
<p><strong>Ethereal trace</strong>: 2.37 seconds for 2500 requests to hit the server.</p>
</blockquote>
<p><strong>Case 4: (2000 Threads)</strong></p>
<blockquote>
<p><strong>JMeter (View Results in Table)</strong>: 0.938 seconds to start 2000 requests.</p>
<p><strong>Ethereal trace</strong>: 1.031 seconds for 2000 requests to hit the server.</p>
</blockquote>
<pre><code>I have run these test from only one machine. 
No listeners added.
Non-Gui mode.
No assertions in my scripts.
Heap size: 8GB
</code></pre>
<p>So, I don't understand why my JMeter Results and ethereal traces differ from each other. I've also tried with <a href="http://jmeter.apache.org/usermanual/component_reference.html#Synchronizing_Timer" rel="noreferrer">Synchronizing Timer</a> to achieve this scenario.</p>
<p>Since 4000 Threads is too heavy, maybe I have to test this in Distributed mode. I've also tried with distributed mode (1 master, 2 slaves). Maybe my script is wrong.</p>
<p>Is it possible to see in the ethereal trace that my 4000 requests hit the server in 1 second?</p>
<p>What will be the JMeter script to achieve this scenario in distributed mode?</p>