查看压测结果
  以下是执行 wrk 后的输出结果:
Running 10s test @ http://localhost:8080/hello/piglei
5 threads and 100 connections
Thread Stats   Avg      Stdev     Max   +/- Stdev
Latency   336.28ms  651.93ms   1.72s    81.42%
Req/Sec   657.74    547.89     3.47k    72.81%
Latency Distribution
50%   28.88ms
75%   38.64ms
90%    1.71s
99%    1.72s
33320 requests in 10.00s, 4.10MB read
Requests/sec:   3331.92
Transfer/sec:    419.74KB
  在一次压测结果中,有很多有用的指标:
  · 吞吐率 Requests/sec: 服务吞吐能力,也是一秒钟平均处理多少请求数。它通常是压测结果中重要的指标。
  · 数据传输速率 Transfer/sec: 数据传输速率,压测响应结果较大的页面时,请尤其注意该值有没有达到网络瓶颈。
  · 响应时间 Latency: 有关响应时间有很多不同值,请不要只关注平均响应时间,更需要注意小值、大值、百分位值、标准差等等。
  · 错误请求数: 当并发数过高,或服务处理能力不够时。请求可以发生错误。你的服务可以多承受多少并发而不产生错误?这是需要重点关注的指标之一。
  可能影响压测结果的因素
  1. HTTP 响应是否开启 Gzip 压缩
  如果目标服务处在 Nginx 等支持 gzip 压缩的服务后,而刚好请求响应体又比较大。那么是否开启压缩会较大程度影响到压测结果。每个工具开启压缩的方式都不一样,一般情况下,你需要手动添加 Accept-Encoding: gzip, defalte 请求头来开启 Gzip 压缩。
  2. 测试机器与目标服务之间的网络质量
  测试机器和目标服务之间的网络状况会很大程度影响压测结果。所以,好保证测试机与目标服务处在同一网段。同时关注压测结果中的数据传输速度(Transfer/sec)是否接近网络速率极限值。
  3. 负载均衡器
  如果你的目标服务前面有配置负载均衡器,那么它可能会对测试结果产生影响。
  比如,使用 Nginx 的 proxy_pass 配置的后端服务,极限 RPS 在几千左右。如果后端服务的吞吐率非常高,那需要考虑负载均衡器会不会成为你测试的瓶颈所在。
  4. 是否开启了 HTTP 长连接
  较现代的 HTTP 服务器基本都支持持久化连接(以前俗称 keep-alive),在测试过程中,请确定你的测试工具与服务端是否都开启了 HTTP 长连接选项。
  因为每次压测通常要产生非常多次请求,客户端的连接是否可以复用对结果影响非常大。可以的话,请将开启或关闭长连接作为两种情况分开测试。
  结束
  以一个测试外行身份谈了一些 HTTP 服务测试相关的内容,如有错误,敬请指正。