gpt4 book ai didi

java - 运行 "empty"Undertow 时每秒 HTTP 请求数的限制因素是什么?

转载 作者:可可西里 更新时间:2023-11-01 02:42:43 32 4
gpt4 key购买 nike

我正在运行一个非常简单的 Undertow 配置。包括完整代码:

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)

我知道它很大,但我很好奇在这种情况下限制因素是什么。它不是处理器(当使用 Java Mission Control 采样时,应用程序运行低于 20%),也不是内存。我在 Windows 上运行它 - 也许这就是原因?

最佳答案

我无法告诉您如何让它在 Windows 中运行时表现更好,但如果您在 Linux 中运行它,您可以在此处为 Jetty 推荐调整:http://www.eclipse.org/jetty/documentation/current/high-load.html总结:

sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216"
sysctl -w net.ipv4.tcp_wmem="4096 16384 16777216"
sysctl -w net.core.somaxconn=4096
sysctl -w net.core.netdev_max_backlog=16384
sysctl -w net.ipv4.tcp_max_syn_backlog=8192
sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.ip_local_port_range="1024 65535"
sysctl -w net.ipv4.tcp_tw_recycle=1
sysctl -w net.ipv4.tcp_congestion_control=cubic

在运行代码时包含 -server JVM 参数。

然后尝试:ab -n 100000 -c 100 http://localhost:9090/test

(使用 100 个连接发出 100,000 个请求)

当我尝试在我的 Windows7 笔记本电脑(3 岁)上运行 VMWare Player 的 Linux 虚拟机时,我每秒收到超过 100,000 个请求。

关于java - 运行 "empty"Undertow 时每秒 HTTP 请求数的限制因素是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27276899/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com