转自: https://zhuanlan.zhihu.com/p/21349186

前情提要:

Tomcat高效响应的秘密(一) Sendfile与Gzip

Tomcat高效响应的秘密(二) keep alive

前面高效响应的两篇,我们分析了Sendfile的特性以及HTTP1.1的keep-alive特性,基于这些功能,Tomcat可以更快速的响应请求。

而在keep-alive的特性分析时,我们发现是服务端与客户端在keep-alive未超时的时候,一直保持TCP的连接,这样在新的请求到达时就避免了重新握手和断开连接。

为了进一步提升性能,Google率先发起并推出了Spdy,许多主流的浏览器都允以支持。最终IETF以此为参照,提出了HTTP/2的标准。

在减少延迟,加速页面加载方面,维基百科上有如下描述:

  • Data compression of HTTP headers

  • HTTP/2 Server Push.

  • Pipelining of requests

  • Fixing the head-of-line blocking problem in HTTP 1.x

  • Multiplexing multiple requests over a single TCP connection

我们来试用一样HTTP/2,直观感受一下它的特点。

需要的材料有:

  • 版本要大于 Tomcat 9.0.0 M4

  • OpenSSL

  • 使用OpenSSL生成的证书文件

观察新版本的Tomcat配置文件server.xml,其中包含如下内容:

<!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443 with HTTP/2

This connector uses the APR/native implementation. When using the

APR/native implementation or the OpenSSL engine with NIO or NIO2 then

the OpenSSL configuration attributes must be used.

-->

<!--

<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"

maxThreads="150" SSLEnabled="true" >

<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />

<SSLHostConfig>

<Certificate certificateKeyFile="conf/localhost-rsa-key.pem"

certificateFile="conf/localhost-rsa-cert.pem"

certificateChainFile="conf/localhost-rsa-chain.pem"

type="RSA" />

</SSLHostConfig>

</Connector>

-->

由于HTTP/2只支持在HTTPS中使用,因此证书是必须的,制做证书的原理,各位请自行Google。

在Tomcat中,要配置其支持HTTP/2,需要以下步骤:

  1. 使用openssl,执行如下命令生成证书

openssl genrsa -out server.key 2048

openssl rsa -in server.key -out server.key

openssl req -new -x509 -key server.key -out ca.crt -days 3650

2. 官网下载Native的dll文件,拷贝到c:\windows\System32目录下,以支持Apr Connector

3. 修改server.xml,将支持http2的https Connector配置去掉注释,修改其中对应的证书路径为第一步生成的路径。

<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol" maxThreads="150" SSLEnabled="true" > <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" /> <SSLHostConfig> <Certificate certificateKeyFile="conf/server.key" certificateFile="conf/ca.crt"/> </SSLHostConfig> </Connector> 

4. 重启Tomcat

5. 使用https://localhost:8443访问

6. 查看logs目录下中对应日期的accesslog, 默认情况下,tomcat的配置中默认开启了accesslog ,此时我们发现,请求使用的协议已经是HTTP 2.0

7. 为了观察更加细致,可以配置Tomcat的日志级别,从而输出更加详细的日志。设置org.apache.coyote.http2.level = FINE,关于日志的原理,可以参考之前两篇文章:

Tomcat的Logging

Tomcat的Logging -- 内部实现方式

8. github 下载一个测试的demo GitHub - jfclere/h2_demos

下载后需要在本地执行.sh文件,生成对应的html文件和相应的images。

9. 部署第8步生成的文件到某个特定应用中,或是新建一个空应用将其添加进去,访问这个应用,查看页面对应的执行时间。

通过上面的这些步骤,我们可以更直观的体验一把HTTP/2带来的性能提升。我们后面的文章再分析其实现原理,各位可以先看之前的这篇文章

服务器推送之WebSocket--原理及Tomcat的实现,了解协议的upgrade

在Youtube上,有Tomcat 的commiter 之一 Mark 介绍Tomcat 的Http/2的视频,墙外的朋友可以直接访问该链接:https://www.youtube.com/watch?v=oCFwgMvouis

墙内的朋友,可以回复关键字http2,获取下载地址

相关阅读

Tomcat的Connector组件

Tomcat高效响应的秘密(二) keep alive

Tomcat高效响应的秘密(一) Sendfile与Gzip

服务器推送之WebSocket--原理及Tomcat的实现

Tomcat的Logging

猜你喜欢

  1. 深度揭秘乱码问题背后的原因及解决方式

  2. WEB应用是怎么被部署的?

  3. 怎样调试Tomcat源码

  4. IDE里的Tomcat是这样工作的!

  5. 重定向与转发的本质区别

  6. 怎样阅读源代码

本专栏由曾从事应用服务器核心研发的工程师维护。文章深入Tomcat源码,分析应用服务器的实现细节,工作原理及与之相关的技术,使用技巧,工作实战等。起于Tomcat但不止于此。同时会分享并发、JVM等,内容多为原创,欢迎关注。

推荐关注同名公众号: Tomcat那些事儿

编辑于 2016-06-14

转载于:https://www.cnblogs.com/xifenglou/p/9394948.html

配置Tomcat使用HTTP/2相关推荐

  1. MyEclipse2014配置Tomcat开发JavaWeb程序JSP以及Servlet

    1.安装准备 1).下载安装MyEclipse2014,这已经是最新版本. 2).下载Tomcat 官网:http://tomcat.apache.org/ 我们选择8.0: http://tomca ...

  2. 6月27日任务 配置Tomcat监听80端口、配置Tomcat虚拟主机、Tomcat日志

    2019独角兽企业重金招聘Python工程师标准>>> 16.4 配置Tomcat监听80端口 1. vim /usr/local/tomcat/conf/server.xml Co ...

  3. 配置Tomcat和在Eclipse中创建Web工程

    配置Tomcat服务器信息: 在Tomcat的安装目录下有一个conf目录,里面存放着Tomcat服务器的配置文件,其中最为核心的配置文件是server.xml,在这个文件里我们可以配置服务器的各种参 ...

  4. Linux Tomcat安装,Linux配置Tomcat,Linux Tomcat修改内存,Linux tomcat修改端口

    Linux Tomcat安装,Linux配置Tomcat,Linux Tomcat修改内存,Linux tomcat修改端口 >>>>>>>>>& ...

  5. linux下配置tomcat、resin

    一.tomcat安装配置 1. 什么是tomcat Tomcat就是用来解析jsp程序的一个软件:web容器: Tomcat是Apache 软件基金会(Apache Software Foundati ...

  6. 配置Tomcat监听80端口 配置Tomcat虚拟主机 Tomcat日志

    配置Tomcat监听80端口 • vim /usr/local/tomcat/conf/server.xml Connector port="8080" protocol=&quo ...

  7. 配置tomcat虚拟主机

    配置Tomcat监听80端口 修改tomcat的默认端口,将其改为80端口,在Connector port端口指定的地方修改为80端口,wq保存退出 [root@aaa ~]# vim /usr/lo ...

  8. Eclipse中配置Tomcat

    Eclipse中配置Tomcat 1.在Eclipse中[New]-[Other] 2.选择[Server]点击[Next] 3.选择须要的Tomact:然后点击[Add] 4.点击[Browse]选 ...

  9. 配置Tomcat使用https协议

    一.  创建tomcat证书 这里使用JDK自带的keytool工具来生成证书: 1. 在jdk的安装目录\bin\keytool.exe下打开keytool.exe 2. 在命令行中输入以下命令: ...

  10. idea配置 Tomcat Deployment添加时没有Artifact...选择的解决方案

    idea配置 Tomcat Deployment添加时没有Artifact...选择的解决方案 参考文章: (1)idea配置 Tomcat Deployment添加时没有Artifact...选择的 ...

最新文章

  1. 西南大学计算机英语统考时间,西南大学2018年9月全国计算机等级考试报名通知...
  2. 持续集成工具 Jetbrains TeamCity 简介
  3. html 内部浮动外部不,DIV设置浮动后无法撑开外部DIV的解决办法
  4. 阿里的 RocketMQ 如何让双十一峰值之下 0 故障?
  5. openssl 安装好了 php如何打开,开启openssl
  6. 20155235 2016-2017-2《Java程序设计》课程总结
  7. MySQL Binlog Mixed模式记录成Row格式
  8. Spring异常重试机制 - Spring Retry
  9. 天池-新冠疫情相似句对判定大赛top6方案及源码
  10. android 中tools命名空间的全解
  11. U盘病毒肆虐横行 金山毒霸2011全面解决隐患
  12. android+tv局域网播放器,【实用教程】电视盒子局域网播放全攻略
  13. 数字验证和table格式(KAYAK)
  14. Assuming drive cache: write through ubuntu硬盘内存扩展
  15. 万亿级消息队列 Kaka 在 Bilibili 实践
  16. java学习资源分享
  17. 模块化 AMD与CMD 规范
  18. 单用户MIMO系统(一):信道信息在发端已知
  19. 渗透测试之XSS(跨站脚本攻击)
  20. python中format是啥意思_python里format什么意思

热门文章

  1. Ajax请求利用jsonp实现跨域
  2. hadoop2.2.0 core-site.xml--security properties
  3. Ubuntu 中改变文件的默认打开方式(转)
  4. Android入门第七篇之ListView (二)
  5. CNN框架的搭建及各个参数的调节
  6. 操作系统03进程管理Process_Scheduling
  7. 【Spark】SparkStreaming-Kafka-Redis-集成-基础参考资料
  8. 10个关于linux中Squid代理服务器的实用面试问答
  9. Tomcat 报 The valid characters are defined in RFC 7230 and RFC 3986
  10. Bootstrap 排版