jmeter 启用gzip压缩——解决测试中web服务器上行流量过大的问题
2015-10-23 16:44
459 查看
最近测了几个前端的项目,发现它们都有一个共同点:应用所在服务器的网卡上行(trans)非常大——经常是 117 MB/S,这已经逼近了千兆网卡的极限了。下面记录下排查和解决过程:
一. jmeter 客户端启用gzip压缩
1. 使用jmeter的查看结果树,发现单次请求的返回都在 220KB以上
2. 查看应用的nginx服务器配置,发现已经启用gzip压缩,那问题是在哪里呢?
3. 尝试用火狐浏览器打开被测页面,F12-单击网络模块,看到request header部分时,发现浏览器启用了 gzip压缩,如下图
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/d6f54fb838957ab34e5a1cd9eb0f9544.jpg)
有木有可能是jmeter默认不支持gzip,导致返回网页是未经过压缩滴? 查看之,艹!果然!!!
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/efa74042f217cddc2f497bde7c04caa9.jpg)
果断通过添加“http信息头管理器”的方式启用GZIP,启用后的jmeter如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/a12d0f3ffa4f731aed5aa594cad49fc0.jpg)
对比下启用压测前后的返回大小:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/178ab75674a35c95086c2b4ec276b555.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/7e2fb2410b188aeab0dbecc2b22b3137.jpg)
效果非常显著!
附:如何在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
一. jmeter 客户端启用gzip压缩
1. 使用jmeter的查看结果树,发现单次请求的返回都在 220KB以上
2. 查看应用的nginx服务器配置,发现已经启用gzip压缩,那问题是在哪里呢?
3. 尝试用火狐浏览器打开被测页面,F12-单击网络模块,看到request header部分时,发现浏览器启用了 gzip压缩,如下图
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/d6f54fb838957ab34e5a1cd9eb0f9544.jpg)
有木有可能是jmeter默认不支持gzip,导致返回网页是未经过压缩滴? 查看之,艹!果然!!!
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/efa74042f217cddc2f497bde7c04caa9.jpg)
果断通过添加“http信息头管理器”的方式启用GZIP,启用后的jmeter如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/a12d0f3ffa4f731aed5aa594cad49fc0.jpg)
对比下启用压测前后的返回大小:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/178ab75674a35c95086c2b4ec276b555.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/7e2fb2410b188aeab0dbecc2b22b3137.jpg)
效果非常显著!
附:如何在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
![](https://oscdn.geek-share.com/Uploads/Images/Content/201510/b72a7715c3524b97fa2c512772aaffc5.jpg)
相关文章推荐
- iOS测算文本高度
- pat1056Mice and Rice (25)
- ZooKeeper: Error contacting service. It is probably not running
- codeforces573D. Bear and Cavalry
- OSX系统编程环境的介绍
- 6. 统计某位老师的所授课程的平均成绩。
- 自定义表做存储过程变量
- 使用SparkSQL实现多线程分页查询并写入文件
- 【IOS 开发学习总结-OC-66】Quartz 2D绘图(4-3)——绘制曲线+在内存中绘图+绘制位图
- 纪念一下,排名又靠前了很多
- JavaScript之 ------ 函数(一般函数、动态函数、匿名函数)
- Vmware给ubuntu添加新硬盘(转)
- CSDN中OceanBase相关话题链接
- c++混合
- 在Windows服务器上启用TLS 1.2及TLS 1.2基本原理
- 4. 查询全部学生都选修的课程的课程号与课程名称。
- 5. 统计选修数据结构课程的学生的平均年龄。
- 一天JavaScript示例-判定web页面的区域
- ie文本模式
- Ruby 交互式编程工具——irb