为什么HTTP / 2比普通HTTPS慢?

时间:2015-11-11 19:25:18

标签: performance http2

我正在评估从HTTP2到我的网站在性能和获得奇怪结果方面可以获得的内容 - 欧洲的网站是从美国加载的:

  • 使用HTTP / 2 - 在6-7秒内
  • 使用普通HTTPS - 5-6秒(大约快1秒)

我已经从Chrome的网络监视器捕获屏幕截图,看起来像HTTP / 2,大多数资源是一个接一个地加载而不是并行加载,就像普通SSL一样。

为了测试我使用我的Apache 2.4.17(Win32)所涵盖的Web应用程序作为代理(以应用对SSL和HTTP / 2协议的支持)。客户端浏览器是Windows 7上的Chrome 46.0.2490.86。

捕获的网络请求如下。简短的摘要: 1.拳头 - 是HTML页面 2.下一组 - 6个请求 - 直接在HTML中声明的资源 3.其余 - 通过脚本动态添加资源('脚本'以及' link / css'标记在文档/头部中)。

图片的左侧是HTTP / 2,     右侧 - 通过普通SSL使用相同的工作人员(http2_module已关闭)。

enter image description here

更新:我已经测试过"其他内容"什么支持HTTP / 2作为反向代理。它来自http://nginx-win.ecsds.eu的nginx 1.9.7.1 Kitty - 原始nginx的分叉'用于windows'。原始nginx中的HTTP / 2仅可用in commercial version,因此我无法尝试。看起来没有其他服务器实现HTTP / 2 +反向代理 for windows ,或者我无法找到它们(列表here和{{3} })。

我与Kitty的结果更具误导性 - 没有连续负载'像Apache这样的资源,但传输速率比HTTP / 2慢两倍于普通SSL。最终结果是 - HTTP / 2明显慢于普通SSL。以下是所有这些并排。

在所有这些中,我只能假设性能强烈依赖于实现,并且当前可用的实现执行奇怪,以得出关于HTTP / 2的任何一致的结论。

here

3 个答案:

答案 0 :(得分:4)

所以,最后我的决定是 - HTTP / 2本身没有任何问题,目前可用的实现有问题。

  • Apache HTTPD 2.4.17 / Win32 - 有一些奇怪的“顺序加载”效应
  • nginx Kitty - 提供非常慢的传输速率
  • 官方免费软件nginx没有内置的http2模块

但是

均显示预期的表现。以下是在“问题”中执行的相同测试的屏幕截图,但在此处的另一个人的Linux计算机上托管了Apache反向代理。

enter image description here

答案 1 :(得分:4)

我们正在使用http / 2

运行最新的nginx
nginx version: nginx/1.9.10
built with OpenSSL 1.0.2e 3 Dec 2015
TLS SNI support enabled

我们做了同样的观察。我们正在记录$ request_time和$ upstream_time。虽然无论协议如何,upstream_time都相等,但整个request_time却不同:

# grep ' 443 ' access.log|grep 'HTTP/1.1'| cut -d ' ' -f 3,4 | awk '{r+=$1; u+=$2} END {print r/NR; print u/NR}'
0.0116887   # HTTP/1.1 request_time in seconds
0.00673473  # HTTP/1.1 upstream_time in seconds

# grep ' 443 ' access.log|grep 'HTTP/2.0'| cut -d ' ' -f 3,4 | awk '{r+=$1; u+=$2} END {print r/NR; print u/NR}'
0.0363673   # HTTP/2.0 request_time in seconds
0.00695812  # HTTP/2.0 upstream_time in seconds

因此http / 1.1的整体请求时间要好三倍!也许因为流而没有使用request_time日志和http / 2的东西。我真的不知道但是,如果两者都在TLS上运行,那么http / 2比http / 1.1更快。

但我会进一步调查此事。

答案 2 :(得分:1)

看看这个,它是从淘宝网开发的nginx的修改版本,由AliExpress和许多其他繁忙网站使用。它支持开箱即用的HTTP2,以及仅在商业nginx中可用的一些其他功能,如上游控制。

http://tengine.taobao.org/