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