前段时间项目压测,看到开发命令行下使用这个命令进行压测非常简洁、方便,萌发了学习的兴趣,这里仅做简单介绍。
安装
wrk支持大多数UNIX系统,不支持Windows。需要操作系统支持LuaJIT和OpenSSL。
安装:只需要从github上下载wrk源码,在项目路径下make即可。
➜ ~ git clone https://github.com/wg/wrk
Cloning into 'wrk'...
remote: Enumerating objects: 1085, done.
remote: Total 1085 (delta 0), reused 0 (delta 0), pack-reused 1085
Receiving objects: 100% (1085/1085), 27.42 MiB | 633.00 KiB/s, done.
Resolving deltas: 100% (337/337), done.
➜ ~ cd wrk
➜ wrk git:(master) make
Building LuaJIT...
==== Building LuaJI
编译后,根目录下会生成可执行文件wrk,可以拷贝到PATH包含目录中,或者直接将当前目录添加到PATH,后续就可以直接使用wrk命令。
默认情况下wrk会使用自带的LuaJIT和OpenSSL。
指定使用系统已经安装的版本如下:
make WITH_LUAJIT=/usr WITH_OPENSSL=/usr
基本使用
➜ ~ wrk --help
Usage: wrk <options> <url>
Options:
-c, --connections <N> Connections to keep open
-d, --duration <T> Duration of test
-t, --threads <N> Number of threads to use
-s, --script <S> Load Lua script file
-H, --header <H> Add header to request
--latency Print latency statistics
--timeout <T> Socket/request timeout
-v, --version Print version details
Numeric arguments may include a SI unit (1k, 1M, 1G)
Time arguments may include a time unit (2s, 2m, 2h)
选项说明:
- -c,跟服务器建立连接并保持的TCP连接数量
- -d,压测时长,支持时间单位:s,m,h
- -t,线程数
- -s,指定Lua脚本路径
- -H, - - header 为每一个HTTP请求添加HTTP头
- --latency 压测结束后,打印延迟统计信息
- --timeout 超时时间
- -v,打印版本信息
优点
优点:
- wrk使用方便,结果清晰
- 因为非阻塞IO的使用,可以在普通测试机上创建出大量的连接,从而达到较好的压测效果
缺点:
- 只能单机压测,适合简单场景的快速验证
其他
支持lua脚本,详见介绍见:<https://www.cnblogs.com/xinzhao/p/6233009.html