使用HTTP2测量性能增强

时间:2018-04-13 11:02:00

标签: performance tomcat profiling http2

我正在使用Tomcat 8.5.29并使用相应的配置,我已启用该站点的HTTP2支持。以下是server.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以获得更好的结果外,是否还需要进行其他配置?

问候,

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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

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

无论如何,回到你的问题:我建议最简单的方法是在浏览器中使用开发人员工具来查看使用和不使用HTTP / 2加载网站需要多长时间 - 这最终是用户体验的内容。如果您可以以编程方式执行此操作(例如,记录使用JavaScript完全加载页面所花费的时间并报告一些方法)以允许更大规模的分析,那么就更好了。这需要比运行像Apache的ab工具之类的东西更多的设置,但如果它们只是下载主页而不是资源,那么它们不会因为HTTP / 2而三重测量改进,并且不会测量用户体验的整个加载时间。