jmeter 启用gzip压缩——解决测试中web服务器上行流量过大的问题

时间:2023-03-08 16:37:00
jmeter 启用gzip压缩——解决测试中web服务器上行流量过大的问题

最近测了几个前端的项目,发现它们都有一个共同点:应用所在服务器的网卡上行(trans)非常大——经常是 117 MB/S,这已经逼近了千兆网卡的极限了。下面记录下排查和解决过程:

一. jmeter 客户端启用gzip压缩

1. 使用jmeter的查看结果树,发现单次请求的返回都在 220KB以上

2. 查看应用的nginx服务器配置,发现已经启用gzip压缩,那问题是在哪里呢?

3. 尝试用火狐浏览器打开被测页面,F12-单击网络模块,看到request header部分时,发现浏览器启用了 gzip压缩,如下图

jmeter 启用gzip压缩——解决测试中web服务器上行流量过大的问题

有木有可能是jmeter默认不支持gzip,导致返回网页是未经过压缩滴? 查看之,艹!果然!!!

jmeter 启用gzip压缩——解决测试中web服务器上行流量过大的问题

果断通过添加“http信息头管理器”的方式启用GZIP,启用后的jmeter如下:

jmeter 启用gzip压缩——解决测试中web服务器上行流量过大的问题

对比下启用压测前后的返回大小:

jmeter 启用gzip压缩——解决测试中web服务器上行流量过大的问题jmeter 启用gzip压缩——解决测试中web服务器上行流量过大的问题

效果非常显著!

附:如何在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压缩——解决测试中web服务器上行流量过大的问题