首页 > 解决方案 > Http2 与 Http1.1 的性能问题

问题描述

我已经为 tomcat9 应用程序从 http1.1 升级到 HTTP2。这次升级后,我可以看到其余 API 的性能变慢了。我对 1000 个样本进行了负载测试,结果,HTTP1.1 具有更好的吞吐量和平均响应时间,但我期望它适用于 HTTP2。

是否有任何配置必须完成或我错过了什么?

PS:响应的 Content-type 是 application/json 类型。

标签: springtomcathttpshttp2

解决方案


您正在将不带 HTTPS 的 HTTP/1.1 与带 HTTPS 的 HTTP/2 进行比较。这并不是对协议的真正比较,因为 HTTPS 有很大的开销——尤其是对于一个连接。

是的,HTTP/2 通常需要 HTTPS,因为没有浏览器支持没有 HTTPS 的 HTTP/2,但浏览器再次对不安全的仅 HTTP 连接和限制功能(如 HTTP/2、Brotli、Service Workers、Geo...等)越来越热心。 . 无论如何到 HTTPS。

在某些情况下,基于HTTPS 的 HTTP/2可以击败基于 HTTP 的 HTTP/1.1,但总的来说,这是一个落后的起点。

此外,当每个连接只发出一个请求时(就像你在 jMeter 中使用线程一样),由于建立连接需要 HTTPS 握手,HTTPS 的开销将占连接的很大一部分。同一连接上的未来请求不会像一般情况下具有相同的费用,加密/解密部分在现代硬件上相对较快,因此不会产生明显的延迟 - 但初始设置部分肯定会。

最后,HTTP/2 通常比 HTTP/1.1 比 HTTP/1.1 更快,因为在很大程度上是由于多路复用而导致的较慢、高延迟的连接。如果在同一个网络上进行测试,我怀疑你可能正在这样做,基本上没有网络延迟,那么 HTTP/2 相对于 HTTP/1.1 的好处可能并不明显。


推荐阅读