Jetty的HTTP / 2客户端速度慢吗?

时间:2016-01-15 08:28:43

标签: jetty http2

通过高速互联网连接(在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使用多个流?

1 个答案:

答案 0 :(得分:4)

这不是测量吞吐量的正确方法。

根据您的地理位置,您将受到客户端和服务器之间延迟的支配。如果延迟为125毫秒,则只能发出8个请求/秒。 例如,从我的位置,ping到http2.golang.org是136毫秒。

即使您的延迟较少,服务器很可能会限制您:我不认为http2.golang.org会很高兴看到您在紧密循环中发出10k请求。

我很想知道同一测试中的curlnghttp潜伏期是多少,但我猜不会有太大差异(如果他们关闭,可能会更糟糕)每个请求后的连接。)

Jetty测试套件中的

This test,也不是一个合适的基准测试,在我的笔记本电脑上显示大约500个请求/秒;没有TLS,大约2500个请求/秒。

我不确切地知道你要做什么,但是你的测试并没有告诉你关于Jetty HttpClient的表现的任何信息。