jmeter 启用gzip压缩——解决测试中web服务器上行流量过大的问题
最近测了几个前端的项目,发现它们都有一个共同点:应用所在服务器的网卡上行(trans)非常大——经常是 117 MB/S,这已经逼近了千兆网卡的极限了。下面记录下排查和解决过程:
一. jmeter 客户端启用gzip压缩
1. 使用jmeter的查看结果树,发现单次请求的返回都在 220KB以上
2. 查看应用的nginx服务器配置,发现已经启用gzip压缩,那问题是在哪里呢?
3. 尝试用火狐浏览器打开被测页面,F12-单击网络模块,看到request header部分时,发现浏览器启用了 gzip压缩,如下图
有木有可能是jmeter默认不支持gzip,导致返回网页是未经过压缩滴? 查看之,艹!果然!!!
果断通过添加“http信息头管理器”的方式启用GZIP,启用后的jmeter如下:
对比下启用压测前后的返回大小:
效果非常显著!
附:如何在jmeter中启用GZIP:
jmeter中get请求gzip数据的方法:
在jmeter线程组中添加“http信息头管理器”,并添加名称:Accept-Encoding值: gzip,deflate
注:HTTP信息头Accept-Encoding 是客户端发给服务器,声明客户端支持的编码类型
验证服务器是否返回了gzip格式数据:
1. 线程组中添加一个“查看结果树”监听器
2.运行测试后,在监听器取样器结果标签页查看http服务器的响应头:
Content-Encoding: gzip
Vary: Accept-Encoding
post方式发送gzip格式文件:
1.http sample里选择“同请求一起发送文件:”MIME类似设置为gzip
2.http 信息头管理器添加http头:
content-type:x-application/x-gzip
content-encoding:gzip
二. Nginx(前端代理和分发)启用gzip压缩
详情参见 http://www.cnblogs.com/onmyway20xx/p/4901364.html
三. Tomcat(后端应用)启用gzip压缩
为啥Tomcat也要启用gzip压缩呢? 大家看下图,页面的流转过程是:tomcat---->nginx---->用户,nginx启用压缩之后,nginx服务器上传瓶颈解决了,但是tomcat--->nginx这块仍然存在瓶颈。相关操作方法参见http://www.cnblogs.com/onmyway20xx/p/4942576.html