web性能测试工具ab虽然简单易用,但不能针对多URL或者内容变更的测试,只能 单一目标压测;而wrk则更灵活、高效。
wrk是流行的HTTP基准测试(benchmarking tool)工具,在单颗多核CPU上即可产生 巨大的负载;卓越的性能来自于 多线程+事件驱动(epoll) 的设计。
另外,可以通过LuaJIT脚本产生HTTP请求、处理应答、定制输出报告等;细节可 参考SCRIPTING或~/scripts文件夹。
注意,wrk所在的测试设备,必须拥有 足够的端口号 ,并且关闭的插口应该能 够快速回收 ;另外,虽然简单的修改HTTP方法、路径等的脚本不会影响wrk的性 能,但per-request动作,如创建新请求等,会降低wrk产生请求负载的能力。
$ git clone https://github.com/wg/wrk.git $ cd wrk $ make 生成的可执行文件就在当前目录下
- -c
- 保持打开的链接数,值
1k/1M/1G - -d
- 测试的时间周期,duration of test
- -t
- 线程数
- -s
- 加载的lua脚本
- -H
- 添加的HTTP请求头
- –latency
- 打印延时统计
- –timeout
- 插口或请求的超时时限,值
2s/2m/2h
此处仅罗列简单的命令行示例,利用Lua脚本丰富操控功能的示例可参考wrk代码 导读。
使用方法
wrk <options> <url>
基准测试,持续10秒,启动2线程,保持10个链接处于打开状态;测试对象为
本地openresty搭建的静态环境,端口号6699
$ cd /path/to/wrk/
$ ./wrk -t2 -c10 -d10s http://localhost:6699/
输出结果
Running 10s test @ http://localhost:6699/
2 threads and 10 connections
Thread Stats Avg Stdev(标准差) Max +/- Stdev
Latency 188.89us 23.83us 612.00us 80.19% 延时
Req/Sec 26.24k 1.57k 28.42k 78.22% 每秒响应数
527550 requests in 10.10s, 92.04MB read
Requests/sec: 52236.42
Transfer/sec: 9.11MB