## 0. 简要介绍 WRK 是一款轻量且易用的 HTTP 压力测试工具,通过该工具我们可以方便地对我们所开发的 WebAPI 项目进行压力测试,并且针对测试的情况返回结果。 > PS:Wrk 并不能针对测试的结果生成动态的图表,如果有这种需要,可以尝试使用另一款工具 Vegeta。该项目使用的 Golang 进行编写,其 GitHub 地址为:[https://github.com/tsenart/vegeta](https://github.com/tsenart/vegeta) 下面的内容就是一个标准的测试结果信息: ```shell # 针对 127.0.0.1:8080 进行压力测试 wrk -t12 -c400 -d30s https://127.0.0.1:8080/index.html ``` ```shell # 这里是测试结果 Running 30s test @ https://127.0.0.1:8080/index.html 12 threads and 400 connections Thread Stats Avg Stdev Max +/- Stdev Latency 635.91us 0.89ms 12.92ms 93.69% Req/Sec 56.20k 8.07k 62.00k 86.54% 22464657 requests in 30.00s, 17.76GB read Requests/sec: 748868.53 Transfer/sec: 606.33MB ``` ## 1. 安装 关于 OS X 与 Windows 的安装可以参考 Wrk 官方 WIKI 进行操作,本文主要讲解一下 CentOS 7.x 下如果进行编译。 ```shell sudo yum groupinstall 'Development Tools' sudo yum install -y openssl-devel git git clone https://github.com/wg/wrk.git wrk cd wrk make ``` 编译之后,你会得到如下结果:  可以看到生成了一个 wrk 的可执行文件,你可以将其添加到环境变量的 PATH 当中,这里就不再赘述,我们等会儿使用的时候直接 ./wrk 使用。 ## 2. 命令说明 ```shell ./wrk -H "Authorization: Bearer TokenValue" -t 2 -c 50 -d 10s --latency --timeout 1s "https://" ``` 上面的命令就是一个典型的压力测试命令,关于参数的含义请看下表。 | 执行命令时的参数 | 含义 | 示例 | | ---------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | -c | 与 HTTP 保持连接的连接数,最终每个线程能够处理的为 连接数/线程数。 | -c 50 | | -d | 指定压力测试的时间有多长。 | -d 10s,其他单位有 2s,2m,2h
## 0. 简要介绍 WRK 是一款轻量且易用的 HTTP 压力测试工具,通过该工具我们可以方