1. 简介
wrk是一款简单的HTTP压测工具,托管在[gitHub](https://links.jianshu.com/go?to=https://github.com/wg/wrk) 上。
gitHub地址:https://github.com/wg/wrk.git。
wrk的一个很好的特性就是能用很少的线程压出很大的并发量,原因是它使用了一些操作系统特定的高性能 io 机制,比如 select、epoll、kqueue 等。 其实它是复用了 redis的ae异步事件驱动框架, 确切的说ae事件驱动框架并不是redis发明的,它来至于 Tcl的解释器jim, 这个小巧高效的框架, 因为被 redis 采用而更多的被大家所熟知。
wrk只能运行在unix环境,例如 linux,mac,solaris。
2. 名词解析
名词 | 描述 | 备注 |
---|---|---|
RT | 响应时长 | 执行一个请求从开始到最后收到响应数据所花费的总体时间 |
TPS | 每秒事务 | 一个事务是指一个客户端向服务器发送请求然后服务器做出响应的过程。客户端在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。TPS过程:客户端请求服务端、服务端业务处理、服务端返回信息给客户端。 |
QPS | 每秒查询 | 理论上QPS>=TPS。每次对一个页面请求访问等价于一个TPS,但每次页面请求可能产生多次对服务器的请求,这里的多次为一个QPS。 QPS=并发量/平均响应时间 |
RPS | 每秒请求数(吞吐量) | 等价于QPS |
3. 工具安装
3.1 Linux
1.获取源码
wget https://github.com/wg/wrk.git
或者
git clone https://github.com/wg/wrk.git
2.进入下载目录
cd wrk/
3.编译wrk文件
make
4.创建软连接引用
ln -s /wrk/wrk /usr/local/bin
或者
cp /wrk/wrk /usr/local/bin
实例
启动一个镜像容器服务 换国内软件源后 安装相关工具|环境后下载源码
3.2 docker
docker pull williamyeh/wrk:latest
docker构建流程可参考:https://github.com/William-Yeh/docker-wrk
4. 工具使用
1.本地模拟启动一个测试服务
PS: Flask实例指定ip为0.0.0.0;port为8073
2.编写post.lua脚本
3.容器服务压测命令:
docker run --rm -v F:/test/lua:/lua williamyeh/wrk -c100 -t1 -d1 -s /lua/post.lua http://172.20.10.2:8073/api/v1/ai001
PS:
-v 本地主机目录(lua脚本位置):容器目录
-c tcp链接数
-t 线程数
-d 压测时间
-s 容器的lua脚本的绝对路径
请求IP和启动容器的网络环境一致
测试结果如下图
5. 其他信息
5.1 wrk命令可选参数说明
命令:wrk <可选参数> <请求URL>
可选参数:
-c, --connections <N> :与服务器建立并保持的tcp连接数
-d, --duration <T> :压测持续时间
-t, --threads <N> :压测使用的线程数
-s, --script <S> : lua脚本文件路径
-H, --header <H> :http请求请求头
--latency :压测结束后 输出延迟统计信息
--timeout <T> :超时时间
-v, --version : wrk详细版本信息
<N> 数字参数,支持国际单位(1k 1M 1G)
<T> 时间参数,支持时间单位(2s 2m 2h)
<S> lua脚本文件路径
PS: 关于线程数,并不是设置的越大,压测效果越好,线程设置过大,反而会导致线程切换过于频繁,效果降低,一般来说,推荐设置成压测机器 CPU 核心数的 2 倍到 4 倍就行了
5.2 wrk返回信息说明
执行命令:
wrk -c 100 -t 1 -d 1 --latency http://www.baidu.com
返回信息:
Running 1s test @ http://www.baidu.com
1 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 368.88ms 122.59ms 521.75ms 72.85%
Req/Sec 166.89 116.46 414.00 77.78%
Latency Distribution
50% 407.92ms
75% 454.84ms
90% 479.50ms
99% 518.37ms
151 requests in 1.01s, 1.52MB read
Requests/sec: 150.24
Transfer/sec: 1.51MB
返回相关信息解析:
Latency : 响应时间
Avg: 平均
Max: 最大
Stdev : 标准差
+/- Stdev: 正负标准差占比
Latency Distribution: 延迟分布
Requests/sec: 吞吐量;每个线程每秒处理的请求数
Transfer/sec: 平均每秒网络流量IO
5.3 Lua运行环境安装
POST请求依赖于lua脚本编写 方便动态编辑
前置工具准备
apt-get install wget
安装验证
wget http://www.lua.org/ftp/lua-5.3.0.tar.gz
tar zxf lua-5.30.0.tar.gz
cd lua-5.3.0
make linux test
make install
lua -v
标签:请求,压测,wrk,lua,--,工具,com
From: https://www.cnblogs.com/fsh19991001/p/17070810.html