使用 HTTP2 衡量性能增强



我正在使用Tomcat 8.5.29并使用相应的配置,我已经为该站点启用了HTTP2支持。以下是服务器.xml文件中的配置。

<Connector port="443" protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="150" SSLEnabled="true" 
compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json" compression="on" compressionMinSize="1024"
>
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<SSLHostConfig>
<Certificate certificateKeyFile="conf/localhost-key.pem"
certificateFile="conf/localhost-cert.pem"
certificateChainFile="conf/cacert.pem"
type="RSA" />
</SSLHostConfig>
</Connector>

当我尝试比较支持 HTTPS 1.1 和 HTTP2 的网站的页面加载时间时,它并不一致。与HTTPS 1.1相比,有时加载时间更长,加载时间更少。

为了测量页面加载时间,我正在使用httpwatch。

我正在寻找有关以下方面的信息

A) 哪些工具可用于使用 http2 衡量性能增强?我们不是公共网站,因此无法使用在线提供的一些工具。

B) 除了在 tomcat 中启用 HTTP2 以获得更好的结果之外,还需要进行任何其他配置吗?

问候

HTTP/2 旨在通过多路复用更改为二进制格式来解决通过 HTTP 加载许多资源的一些低效率问题。

在 HTTP/1 下,通过高延迟、长距离网络(就像互联网的大部分一样)请求许多资源意味着下载网站资产的速度比它们需要的要慢。这是因为每个 HTTP/1.1 连接一次只能处理一个资源,并且在等待第一个请求被发回时不能使用该连接来处理另一个请求。

因此,对于您的用例,我假设这是在内部网上,并且服务器可能离您很近,并且具有高速链接?如果是这样,老实说,HTTP/2不太可能给你带来巨大的性能提升,因为无论如何资源可能会很快被发回。因此,对于您没有看到这种情况的改进,我并不感到惊讶。

此外,下载多个资产只是使用网站的一部分。如果网站需要大量的服务器端处理才能生成,那么下载端(HTTP/2应该改进)可能是加载时间的一小部分,可以忽略不计,甚至对此进行重大改进也可能不明显。同样,如果网站即使在下载后也很慢(例如,因为它使用了大量的JavaScript),那么这不会通过移动到HTTP/2来解决。

对我来说,HTTP/2 对于提供静态资源(图像、CSS 和 JavaScript)比从应用程序服务器(基于 Java 或其他服务器)的动态资源更有意义,所以我不相信在 Tomcat 等上真正迫切需要 HTTP/2。即使你使用Tomcat来提供静态资源,你也可能最好在它前面放置一个更快的HTTP/2网络服务器(Apache,Nginx),并将它们卸载到那里,只将真正的动态内容代理到Tomcat上。

因此,虽然HTTP/2是对协议的极大改进(在大多数情况下),但使您的网站速度快10倍并不是一个神奇的解决方案。说HTTP/2是未来的恕我直言,所以没有理由转向它(主要是在许多实现中缺乏对HTTP/2的支持 - 特别是如果运行旧版本的服务器软件,但你已经解决了这个问题)。

无论如何,回到你的问题:我建议的最简单方法是在浏览器中使用开发人员工具,看看加载有和没有HTTP/2的网站需要多长时间 - 这最终是你的用户正在经历的。如果你能以编程方式做到这一点(例如,记录用JavaScript完全加载页面所花费的时间,并以某种方式报告),以便进行更大规模的分析,那就更好了。这比运行Apache的ab工具之类的东西需要更多的设置,但是如果他们只下载主页而不是资源,这些不会三重衡量由于HTTP/2而带来的改进,也不会测量用户体验的整个加载时间。

最新更新