WRK 并发性能测试

169 阅读2分钟

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 连接数,可以理解为用户数-c100100个连接
-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)