1.wrk的环境安装
- 安装wrk
git clone https://gitee.com/mirrors/wrk.git
git clone https://gitee.com/mirrors/wrk.git
- cd 进入 wrk文件下
cd wrk
- 执行make命令进行编译
make
- 编译成功后,会在项目路径下生成可执行文件wrk,随后就可以使用了
- 安装成功:
翻译成中文:
使用方法: wrk <选项> <被测HTTP服务的URL>
Options:
-c, --connections <N> 跟服务器建立并保持的TCP连接数量
-d, --duration <T> 压测时间
-t, --threads <N> 使用多少个线程进行压测,压测时,是有一个主线程来控制我们设置的n个子线程间调度
-s, --script <S> 指定Lua脚本路径
-H, --header <H> 为每一个HTTP请求添加HTTP头
--latency 在压测结束后,打印延迟统计信息
--timeout <T> 超时时间
-v, --version 打印正在使用的wrk的详细版本信
<N>代表数字参数,支持国际单位 (1k, 1M, 1G)
<T>代表时间参数,支持时间单位 (2s, 2m, 2h)
二、压力测试
1、最简单的压力测试示例,get请求,固定url固定参数
./wrk -t10 -c30 -d 2s -T5s --latency http://www.baidu.com
参数释义:
-t:需要模拟的线程数
-c:需要模拟的连接数
-d:测试的持续时间
----timeout 或 -T:超时的时间
–latency:显示延迟统计
-s 或 --script: lua脚本,使用方法往下看
-H, --header: 添加http header, 比如. “User-Agent: wrk”
运行结果
Running 2s test @ http://www.baidu.com
10 threads and 30 connections
平均值 标准差 最大值 正负一个标准差占比
线程状态 Thread Stats Avg Stdev Max +/- Stdev
响应时间 Latency 56.64ms 98.03ms 659.89s 85.60%
每线程每秒完成请求数Req/Sec 183.67 167.38 484.00 68.51%
Latency Distribution 延迟统计
50% 6.90ms 有50%的请求执行时间是在6.90ms内完成
75% 68.64ms 有75%的请求执行时间是在68.64ms内完成
90% 189.61ms 有90%的请求执行时间是在189.61ms内完成
99% 515.19ms 有99%的请求执行时间是在515.19ms内完成
3390 requests in 2.01s, 50.50MB read 2秒执行了3390个请求,读了50.50MB数据
Socket errors: connect 0, read 3, write 0, timeout 0 错误:连接错误:0 读错误:3
Requests/sec: 1687.98 每秒请求数(也就是QPS)
Transfer/sec: 25.15MB 每秒钟读取25.15兆数据量