title: What is the limiting factor of HTTP requests per seconds when running "empty" Undertow?
body: <p>I'm running a very simplistic Undertow configuration. Whole code included:</p>
  
  <pre><code>public class HelloWorldUndertow {
      public static void main(String[] args) {
          Undertow undertow = Undertow.builder()
                  .addHttpListener(9090, "0.0.0.0")
                  .setHandler(new HttpHandler() {
                      @Override
                      public void handleRequest(HttpServerExchange exchange) throws Exception {
                          exchange.setResponseCode(200);
                          exchange.getResponseSender().send("hello!");
                      }
                  }).build();
          undertow.start();
      }
  }
  </code></pre>
  
  <p>I try to test how many requests per second it can handle. I'm using apache <code>ab</code> tool for measurements:</p>
  
  <pre><code>ab -n 100000 -c 10 http://localhost:9090/test
  </code></pre>
  
  <p>The biggest number I managed to get is around 10000 3/sec:</p>
  
  <pre><code>Concurrency Level:      10
      Time taken for tests:   10.664 seconds
      Complete requests:      100000
      Failed requests:        0
      Total transferred:      10000000 bytes
      HTML transferred:       600000 bytes
      Requests per second:    9377.69 [#/sec] (mean)
      Time per request:       1.066 [ms] (mean)
      Time per request:       0.107 [ms] (mean, across all concurrent requests)
      Transfer rate:          915.79 [Kbytes/sec] received
  
      Connection Times (ms)
      min  mean[+/-sd] median   max
      Connect:        0    0   0.2      0       1
      Processing:     0    1   0.5      1      11
      Waiting:        0    1   0.5      1      11
      Total:          0    1   0.5      1      11
  
      Percentage of the requests served within a certain time (ms)
      50%      1
      66%      1
      75%      1
      80%      1
      90%      2
      95%      2
      98%      2
      99%      2
      100%     11 (longest request)
  </code></pre>
  
  <p>I get that it is BIG, but I'm curoius what is a limiting factor in this case. It's not processor (the app is running below 20% when sampled using Java Mission Control) and not memory. I'm running it on Windows - maybe that is the reason?</p>