HTTP/1.1的性能问题及可优化方案

       当前HTTP/1.1协议已经走过了有20个年头了,面对现代WEB应用,特别移动应用的挑战,设计缺陷问题日益明显,以下将主要列出主要存在的五大问题

  1. 队头阻塞:在大多数情况下,浏览器获取资源都是多份的,HTTP/1.1并没有提供机制来同时请求所有的资源,在仅仅只有一个连接的时候(实际情况,现代浏览器可能针对单个域名建立多个连接,实现某程度并行),它需要发起请求,并等待响应.在这之后再发起下一请求,请求响应.即使HTTP/1.1有一个特性为管道化,允许发送一组请求,但是只能按照发送顺序依次接收响应;如果在请求应答过程中,出现任何的状况,剩下的所有请求都会被出现问题的请求应答之后,这就是"队头阻塞";
  2. 低效的TCP利用:TCP协议作为最可靠的协议之一,其核心就是拥塞窗口[拥塞窗口指的是在接收方确认数据包之前,发送方可以发出]的TCP包的数量];拥塞控制能防止过多的数据注入到网络中,避免网络过载.TCP中可以通过慢启动探索当前连接对应拥塞窗口的合适大小,即发送者发送数据的时候并非一开始注入大量数据到网络中,而是发送一个数据包进行测试,当得到确认回复后,额外发送一个未确认包,即得到一个确认回复,可以发送两个数据包,得到两个确认回复可以发送四个数据包,以几何形式增长便可很快到达协议规定的拥塞窗口规定,这时候连接进入拥塞避免阶段;这种机制需要往返几次才能得知最佳拥塞窗口大小,但往返几次所需的时间成本不可忽略;
  3. 臃肿的消息首部:HTTP/1.1能压缩请求内容,但是消息首部不能压缩;在现今请求中,消息首部占请求
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tomcat8 配置优化是提高生产环境性能的重要手段之一。以下是一些最佳实践和建议: 1. 调整 JVM 堆大小 JVM 堆大小是 Tomcat 性能的重要参数之一。在生产环境中,建议将最大堆大小设置为服务器物理内存的 70% 到 80%。 2. 启用压缩 Tomcat8 默认支持 GZIP 压缩,可通过在 server.xml 中添加以下代码启用: ``` <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata" compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json"/> ``` 3. 调整线程池 Tomcat8 默认使用的线程池是 NioEndpoint,可以通过修改 server.xml 文件中的以下参数进行优化: ``` <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" executor="tomcatThreadPool" maxThreads="500" minSpareThreads="50"/> ``` 其中 maxThreads 表示最大线程数,minSpareThreads 表示最小空闲线程数。 4. 启用缓存 Tomcat8 支持启用缓存,可以通过在 server.xml 文件中添加以下代码启用: ``` <Context cachingAllowed="true" cacheMaxSize="100000" cacheTTL="10000" cacheObjectMaxSize="1000"/> ``` 其中 cachingAllowed 表示是否启用缓存,cacheMaxSize 表示缓存最大大小,cacheTTL 表示缓存过期时间,cacheObjectMaxSize 表示缓存对象最大大小。 5. 关闭不必要的 Valve Tomcat8 默认启用了一些 Valve,如 AccessLogValve、RemoteAddrValve 等。在生产环境中,可以根据具体情况,关闭不必要的 Valve 以提高性能。 6. 使用 CDN 使用 CDN 可以将静态资源分发到不同的服务器上,减轻 Tomcat 的压力,提高性能。可以通过在 server.xml 文件中添加以下代码启用: ``` <Context docBase="webapps/myapp" path="/myapp"> <Resources className="org.apache.catalina.webresources.DirResourceSet" base="/var/www/myapp/static" webAppMount="/static"/> </Context> ``` 其中 base 表示静态资源所在路径,webAppMount 表示静态资源 URL 路径。 以上是一些 Tomcat8 配置优化的最佳实践和建议,可以根据具体情况进行调整以提高生产环境性能

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值