Jetty 的 HTTP/2 客户端很慢?
Jetty's HTTP/2 client slow?
通过高速互联网连接(在 AWS EC2 实例中)执行简单的 GET 请求,吞吐量似乎非常低。我已经在多台服务器上试过了。
这是我正在使用的代码:
HTTP2Client http2Client = new HTTP2Client();
http2Client.start();
SslContextFactory ssl = new SslContextFactory(true);
HttpClient client = new HttpClient(new HttpClientTransportOverHTTP2(http2Client), ssl);
client.start();
long start = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
System.out.println("i" + i);
ContentResponse response = client.GET("https://http2.golang.org/");
System.out.println(response.getStatus());
}
System.out.println(System.currentTimeMillis() - start);
我得到的吞吐量大约是每秒 8 个请求。
这似乎很低(与命令行上的 curl 相比)。
有什么我遗漏的吗?有什么方法可以涡轮增压吗?
编辑:如何让 Jetty 使用多个流?
这不是衡量吞吐量的正确方法。
根据您所在的地理位置,您将主要受客户端和服务器之间的延迟影响。如果延迟是125毫秒,你只能做出8requests/s。
例如,从我所在的位置,ping
到 http2.golang.org 是 136 毫秒。
即使您的延迟更短,服务器也很有可能会限制您:我认为 http2.golang.org 不会高兴看到您在紧密循环中发出 10k 请求。
我很想知道同一测试中的 curl
或 nghttp
延迟是多少,但我想不会有太大的不同(或者如果他们关闭连接可能会更糟在每次请求之后)。
This test 在 Jetty 测试套件中,这也不是一个合适的基准,在我的笔记本电脑上显示大约 500 requests/s;没有 TLS,达到 2500 左右 requests/s。
我不知道你到底想做什么,但你的测试没有告诉你任何关于 Jetty HttpClient
性能的信息。
通过高速互联网连接(在 AWS EC2 实例中)执行简单的 GET 请求,吞吐量似乎非常低。我已经在多台服务器上试过了。
这是我正在使用的代码:
HTTP2Client http2Client = new HTTP2Client();
http2Client.start();
SslContextFactory ssl = new SslContextFactory(true);
HttpClient client = new HttpClient(new HttpClientTransportOverHTTP2(http2Client), ssl);
client.start();
long start = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
System.out.println("i" + i);
ContentResponse response = client.GET("https://http2.golang.org/");
System.out.println(response.getStatus());
}
System.out.println(System.currentTimeMillis() - start);
我得到的吞吐量大约是每秒 8 个请求。
这似乎很低(与命令行上的 curl 相比)。
有什么我遗漏的吗?有什么方法可以涡轮增压吗?
编辑:如何让 Jetty 使用多个流?
这不是衡量吞吐量的正确方法。
根据您所在的地理位置,您将主要受客户端和服务器之间的延迟影响。如果延迟是125毫秒,你只能做出8requests/s。
例如,从我所在的位置,ping
到 http2.golang.org 是 136 毫秒。
即使您的延迟更短,服务器也很有可能会限制您:我认为 http2.golang.org 不会高兴看到您在紧密循环中发出 10k 请求。
我很想知道同一测试中的 curl
或 nghttp
延迟是多少,但我想不会有太大的不同(或者如果他们关闭连接可能会更糟在每次请求之后)。
This test 在 Jetty 测试套件中,这也不是一个合适的基准,在我的笔记本电脑上显示大约 500 requests/s;没有 TLS,达到 2500 左右 requests/s。
我不知道你到底想做什么,但你的测试没有告诉你任何关于 Jetty HttpClient
性能的信息。