wrk入门总结
-
-
- 一、功能介绍:
- 二、安装过程:
-
-
- git地址:
- make编译过程中问题解决:
- 创建软链接到指定目录
- 验证是否安装成功
-
- 三、wrk 初步使用
-
-
- 基本用法:
-
- 使用方法--readme
- 参数设定经验
-
- 四 测试场景
-
- 测试HTTP协议网络的性能
- 测试当前服务的最大QPS
- 使用Lua脚本个性化wrk压测
-
一、功能介绍:
wrk2是一个主要基于wrk的HTTP基准测试工具,wrk2经过修改后能够提供稳定的吞吐量负载以及更精确的延时统计,即通过设置参数,wrk2增加了–rate或-R参数设置吞吐量(每秒总请求数)及–u_latency参数显示延时统计。
二、安装过程:
wrk安装过程非常简单,下载源码后在项目目录下执行make命令即可。
-
git地址:
https://github.com/giltene/wrk2# git clone https://github.com/giltene/wrk2.git 下载源码 # cd wrk2 安装目录 # make
-
make编译过程中问题解决:
1. -bash: make: command not found[[email protected] wrk2-master]# make -bash: make: command not found
系统无法使用make,make install,一般出现== -bash: make: command not found ==的提示,是因为安装系统的时候使用的是最小化安装,缺少make、vim等常用命令。
直接安装make即可解决问题:
安装g++:
2. src/wrk.h:11:25: fatal error: openssl/ssl.h: No such file or directory
问题在于:系统中缺少openssl库,安装即可wrk2入门-http性能压测工具总结 [[email protected] wrk2-master]# yum install openssl-devel 或者 [[email protected] wrk2-master]# yum install libssl-dev
-
创建软链接到指定目录
这一步必须进行设置,否则会出现报错,-bash: wrk: command not found -
验证是否安装成功
make完成后当前路径下会生成可执行文件wrk,表示可以使用wrk进行http压测了。wrk2入门-http性能压测工具总结
三、wrk 初步使用
-
基本用法:
Basic Usage:wrk <options> <url>
Options: -c, --connections <N> Connections to keep open # HTTP连接数,如1k,1M,1G, -d, --duration <T> Duration of test # 测试持续时间,如 2s 2m 2h -t, --threads <N> Number of threads to use # 开启的线程数 -s, --script <S> Load Lua script file # 进阶功能,使用 lua 脚本 -H, --header <H> Add header to request # 添加请求头 # 打印详细延迟统计 -L --latency Print latency statistics -U --u_latency Print uncorrceted latency statistics ==# 设置请求超时时间,大于该时间的请求将被记录== --timeout <T> Socket/request timeout -B, --batch_latency Measure latency of whole batches of pipelined ops (as opposed to each op) -v, --version Print version details -R, --rate <T> work rate (throughput) #工作速率(吞吐量)即每个线程每秒钟完成的请求数 in requests/sec (total) [Required Parameter]
- 使用方法–readme
使用方法 | 说明 | 吞吐量/每秒总请求数 |
---|---|---|
wrk -t2 -c100 -d30s -R2000 http://127.0.0.1:8080/index.html | 2个线程,100个连接,持续时间30s 每秒2000个请求 | Requests/sec: 2000.12 |
wrk -t2 -c100 -d30s -R2000 --latency url | 2个线程,100个连接,持续时间30s,每秒2000个请求 | 延迟标识,延迟百分比 |
- 参数设定经验
wrk2入门-http性能压测工具总结
四 测试场景
-
测试HTTP协议网络的性能
压测简单说明:以上使用了2个线程1000个http连接,对baidu进行了15s的压测,并要求在压测结果中输出响应延迟信息。Running 15s test @ https://www.baidu.com/ ------压测时间15s 2 threads and 1000 connections -------共2个测试线程,1000个连接 Thread calibration: mean lat.: 24.071ms, rate sampling interval: 41ms Thread calibration: mean lat.: 24.373ms, rate sampling interval: 40ms Thread Stats Avg Stdev Max +/- Stdev -----平均值 标准差 最大值 正负一个标准差所占的比例 Latency 13.10ms 5.09ms 124.16ms 95.55% -----延迟 Req/Sec 449.03 706.21 5.15k 94.26% -----处理中的请求数 Latency Distribution (HdrHistogram - Recorded Latency) -----延迟分布 50.000% 12.34ms 75.000% 13.68ms 90.000% 15.83ms -----90分位的延迟 99.000% 21.14ms ----99分位的延迟 99.900% 107.97ms 99.990% 124.22ms 99.999% 124.22ms 100.000% 124.22ms #[Mean = 13.101, StdDeviation = 5.093] #[Max = 124.160, Total count = 2201] #[Buckets = 27, SubBuckets = 2048] ---------------------------------------------------------- 13795 requests in 15.00s, 206.31MB read ----15s内共处理完成了13795个请求,读取了206.31MB数据 Requests/sec: 919.62 -----平均每秒处理完成919.62个请求 Transfer/sec: 13.75MB -----平均每秒读取数据13.75MB
-
测试当前服务的最大QPS
进入安装目录,运行
通过-R参数获取吞吐量参数 | 每秒请求量的结果 |
---|---|
./wrk2 -t10 -c50 -d30 -R3000 -H “Host:xxx.com” http://localhost/a/a.mp4 -L | Requests/sec: 3000.12 |
./wrk2 -t10 -c50 -d30 -R5000 -H “Host:xxx.com” http://localhost/a/a.mp4 -L | Requests/sec: 5000.12 |
./wrk2 -t10 -c50 -d30 -R10000 -H “Host:xxx.com” http://localhost/a/a.mp4 -L | Requests/sec: 9800.12 |
./wrk2 -t10 -c50 -d30 -R20000 -H “Host:xxx.com” http://localhost/a/a.mp4 -L | Requests/sec: 12500.12 |
./wrk2 -t10 -c50 -d30 -R30000 -H “Host:xxx.com” http://localhost/a/a.mp4 -L | Requests/sec: 13000.12 |
从以上的测试过程中可以看出,服务最大的每秒请求量为13000,可见性能压测的QPS为1.3万左右,考虑本机测试性能损耗问题,即QPS>1.2万。
-
使用Lua脚本个性化wrk压测
以上是介绍wrk的安装及简单的使用,可以看出wrk的使用较简单方便,且测试结果清晰,一般情况下关注的指标主要是:90分位延迟、99分位延迟及Requests/sec。但是工作上往往需要较复杂的测试场景,这种简单的压测可能就不满足需求。比如,使用POST 方法跟服务器交互;每次请求使用不同的参数;为了更好的模拟服务场景,需要使用wrk的script lua脚本来定制压测过程,即满足定制化的需求。
有关wrk高级使用方法,可以查看我的另一篇博客:wrk2的高级使用方法