1. 安装wrk
1.1 下载
mkdir /data/tools/
cd /data/tools
git clone https://github.com/wg/wrk.git
1.2 编译
cd /data/tools/wrk
make
1.3 全局可用
ln -s /data/tools/wrk/wrk /usr/bin/wrk
2. 使用
wrk -c100 -t 10 -d 1m -H "host: your-domain.com" http://127.0.0.1:8888/hello/id/1
3. 参数说明
| 参数 | 说明 | 示例 | 示例说明 |
|---|---|---|---|
| -c | --connection 连接数,可以理解为用户数 | -c100 | 100个连接 |
| -t | --thread 线程数,可以理解为cpu核数*2 | -t 2 | 使用两个线程,线程并不是越多越好,和当前服务器cpu核数匹配才能发挥最佳性能 |
| -d | --duration 测试的持续时间 | -d 1m | 持续测试1分钟 |
| -H | --header 为每一个HTTP请求添加HTTP头 | -H "your-domain.com" | 添加请求头信息 |
| -V | --version WRK版本信息 | -V | 打印正在使用的wrk的详细版本信息 |
PS: 关于线程数,并不是设置的越大,压测效果越好,线程设置过大,反而会导致线程切换过于频繁,效果降低,一般来说,推荐设置成压测机器 CPU 核心数的 2 倍到 4 倍就行了。
4. 测试结果解析
Running 30s test @ http://www.baidu.com (压测时间30s)
12 threads and 400 connections (共12个测试线程,400个连接)
(平均值) (标准差) (最大值)(正负一个标准差所占比例)
Thread Stats Avg Stdev Max +/- Stdev
(延迟)
Latency 386.32ms 380.75ms 2.00s 86.66%
(每秒请求数)
Req/Sec 17.06 13.91 252.00 87.89%
Latency Distribution (延迟分布)
50% 218.31ms
75% 520.60ms
90% 955.08ms
99% 1.93s
4922 requests in 30.06s, 73.86MB read (30.06s内处理了4922个请求,耗费流量73.86MB)
Socket errors: connect 0, read 0, write 0, timeout 311 (发生错误数)
Requests/sec: 163.76 (QPS 163.76,即平均每秒处理请求数为163.76)
Transfer/sec: 2.46MB (平均每秒流量2.46MB)
Running 30s test @ http://10.60.82.91/ (压测时间30s)
32 threads and 400 connections (共32个测试线程,400个连接)
(平均值) (标准差) (最大值)(正负一个标准差所占比例)
Thread Stats Avg Stdev Max +/- Stdev
Latency(延迟) 10.31ms 40.13ms 690.32ms 98.33%
Req/Sec(每秒请求数) 2.14k 482.15 6.36k 77.39%
Latency Distribution
50% 5.11ms
75% 7.00ms
90% 9.65ms
99% 212.68ms
(30.10s内处理了2022092个请求,耗费流量1.62GB)
2022092 requests in 30.10s, 1.62GB read
Requests/sec: 67183.02 (QPS 67183.02,即平均每秒处理请求数为67183.02)
Transfer/sec: 55.03MB (平均每秒流量55.03MB)