nginx的http2.0性能太逆天了,HTTPS网站性能优化
来源:互联网 发布:别人要我电脑mac地址 编辑:程序博客网 时间:2024/06/06 17:14
m## 关于http2.0
请阅读: [HTTP 2.0的那些事][(http://mrpeak.cn/blog/http2/)
背景
我们七层负载层,使用了5台24U+64G内存的物理机支行nginx做https加解密与proxy_pass。每天上下班时段,5台机CPU基本在50%左右,算是计算型。
优化手段:keepalive、换TLS1.2加密算法优化(参考:1,2)等,收效不大。
特别简明一下keepalive选项,不论服务端如何支持,关键是客户端不跟你keep,你玩个屁。
测试过程
- 硬件: 24U+64G物理机2台,1台跟测试,1台跑ngx; 同个局域网内,1GB网卡。
nginx -V:
version: openresty/1.9.7.3
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
–with-http_v2_moduleApache的ab压测工具: yum安装
- boom 是模拟ab的golang实现的压测工具: https://github.com/rakyll/boom
- nghttp2 的 h2load 压测工具: https://github.com/tatsuhiro-t/nghttp2
- CentOS-7 64位
- 测试文件大小:5k,10k的图片,作静态文件的https测试。
- 测试过程简单来看参数:-c=100~3000,-n=1k~10kw 的各种组合, 使用h2load时-m=1~1000都有试过,-m范围大小,对http2结果影响不太大。
图:
放流量图你就明白了:
下图为使用ab与boom时:
此时ab与boom都有使用-k,反正怎么玩,测量与时间都大概在这个水平。
例如以下命令,基本上要跑个半小时:
boom -c 1000 -n 1000000 -allow-insecure https://172.16.9.234/5k.jpg
ab -c 1000 -n 1000000 -khttps://172.16.9.234/5k.jpg
参数不变换成http2时:
h2load -c 1000 -n 1000000 -m1 https://172.16.9.234/5k.jpg
h2load运行结果如下:
再有下图为h2load测试http2时:
千兆网卡,流出流量全满上。
结论
以下结论经过多次重复测试,只代表本人意见,转载请注明from:toontong.
- 同等并发数下,http2.0只用了43秒传输完4.3G数据;而http1.1用40多分钟。
- 单论传输性能提升10倍不止,对我们关键的https CPU占用效果非常明显。
- 对web服务整体性能提升当然没10倍,原因还有连接建立在需时等,更多原因要深研http2原理了。
- go1.6后才有http2-client库的支持,低版本go感觉可以使用https://github.com/tatsuhiro-t/go-nghttp2
- 如果真普及http2.0,对整个互联流量,互联网公司的机器节约,都是大大福音。
- nginx的http2.0性能太逆天了,HTTPS网站性能优化
- 前端性能优化的另一种方式——HTTP2.0
- Web性能优化与Http2
- Web性能优化与Http2
- [nginx]nginx的性能优化
- 网站的性能优化
- nginx+http2+https
- nginx https http2
- web2.0网站的性能优化方法
- HTTP,HTTP2.0,SPDY,HTTPS看这篇就够了
- HTTP,HTTP2.0,SPDY,HTTPS看这篇就够了
- HTTP2.0性能增强的核心:二进制分帧
- HTTPS性能优化
- HTTPS性能优化实践
- HTTPS 性能优化
- HTTPS 性能优化技巧
- java的性能优化网站
- java的性能优化网站
- tomcat实现https登录
- 几种等等概率抽样方法
- 辗转相除法
- hdu 检测赛 Problem C(状压dp)
- 聚合类
- nginx的http2.0性能太逆天了,HTTPS网站性能优化
- C语言面试题(1)
- erlang game
- 闭包 转
- C# 多态性
- sqlserver 自定义、删除、执行 函数和存储过程
- 数据库连接学习(二)——Tomcat下使用C3P0配置JNDI数据源
- Activity和Service之间通过handler传递数据
- [Android 性能优化系列]布局篇之通过<include>复用布局