简易测试工具wrk

转载请注明出处 http://www.paraller.com
原文排版地址 点击跳转git

介绍

wrk 是一个很简单的 http 性能测试工具. 也能够叫作 http benchmark 工具. 只有一个命令行, 就能作不少基本的 http 性能测试.github

简单步骤

安装

git clone https://github.com/wg/wrk.git  
cd wrk  
make

使用

wrk -t12 -c100 -d30s -T30 http://www.baidu.com 
wrk -t2 -c100 -d30s http://localhost:8081/ticket/tyj/profitList/uegjVvnL-Watj-iFBA-X4lu-OHINAkqC7Cwy
  • t: 线程数
  • c: 请求链接数
  • d: 测试时间,
  • T: 默认超时时间是1秒. 这个有点短. 我通常设置为30秒

通常线程数不宜过多. 核数的2到4倍足够了. 多了反而由于线程切换过多形成效率下降. 由于 wrk 不是使用每一个链接一个线程的模型, 而是经过异步网络 io 提高并发量. 因此网络通讯不会阻塞线程执行. 这也是 wrk 能够用不多的线程模拟大量网路链接的缘由. 而如今不少性能工具并无采用这种方式, 而是采用提升线程数来实现高并发. 因此并发量一旦设的很高, 测试机自身压力就很大. 测试效果反而降低.网络

结果说明

Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   354.59ms  377.09ms   1.99s    83.74%
    Req/Sec    21.07     12.79    90.00     80.37%
  6957 requests in 30.10s, 102.55MB read
  Socket errors: connect 0, read 19, write 0, timeout 117
Requests/sec:    231.11
Transfer/sec:      3.41MB
  • Latency: 能够理解为响应时间, 有平均值, 标准误差, 最大值, 正负一个标准差占比.
  • Req/Sec: 每一个线程每秒钟的完成的请求数, 一样有平均值, 标准误差, 最大值, 正负一个标准差占比.
  • 通常咱们来讲咱们主要关注平均值和最大值. 标准差若是太大说明样本自己离散程度比较高. 有可能系统性能波动很大.

进阶-脚本调用

post.lua
wrk.method = "POST"  
wrk.body   = "foo=bar&baz=quux"  
wrk.headers["Content-Type"] = "application/x-www-form-urlencoded"
调用
wrk -t12 -c100 -d30s -T30s --script=post.lua --latency http://www.baidu.com

参考网站

wrk -- 小巧轻盈的 http 性能测试工具.并发

相关文章
相关标签/搜索