wrk 是一个使用 C 编写的 HTTP 压力测试工具,性能基准测试工具。可以在单机多核 CPU 的条件下,充分利用系统的高性能 IO,epoll,kqueue 等,通过多线程和事件,对目标机产生大量的负载。
wrk 采用了和 Redis 一样的 ae 异步事件驱动框架。
优势
- 轻量
- 安装简单
- 使用手册简单
- 自带高性能 IO,通过很少线程即可产生很大的并发量
缺点
目前只支持单机压测,设计的目的不是为了代替专业的 [[Apache JMeter]] 以及 [[LoadRunner]] 等测试工具。
wrk 比较适合于后端对接口的性能测试。
wrk 只能被安装在类 Unix 系统上。Windows 则需要开启 Ubuntu 子系统。
安装
macOS
使用
wrk -t12 -c400 -d30s http://127.0.0.1:8080/index.html
这一行命令会使用 12 线程,测试 30 秒,并且保持 400 HTTP 连接。
更多命令选项
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)
可以通过 Lua 脚本的方式来产生 POST,PUT 等请求。