我正在运行一个非常简单的Undertow配置。整个代码包括:运行“空”Undertow时,每秒HTTP请求的限制因素是什么?
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();
}
}
我试着测试它可以处理多少个请求。我使用的Apache ab
工具进行测量:
ab -n 100000 -c 10 http://localhost:9090/test
我设法得到最大数量约为10000 3 /秒:
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)
我得到的是大的,但我curoius在这种情况下什么是限制因素。它不是处理器(使用Java任务控制采样时,应用程序运行时低于20%),而不是内存。我在Windows上运行它 - 也许这是原因?