本文阅读大概需要 3 分钟
什么是wrk
wrk是一个用来做HTTP benchmark测试的工具。可以产生显著的压力。
为什么是wrk
相比于Apache ab功能更为强大,可以使用lua脚本来支持更为复杂的测试场景,例如PUT请求等。
在对于Restful架构的API接口来说,测试起来更加便捷。
获取和安装
源码地址: https://github.com/wg/wrk
1 |
|
使用方法
基本使用方法
1 | $ wrk -t 2 -c 50 -d 1 --latency http://bj.58.com |
使用两个线程保持50个连接请求1秒钟,并打印延迟统计信息:
1 | Running 1s test @ http://bj.58.com |
主要关注的点有:
Latency
请求处理时延,上面测试结果平均延时时间为148.87msRequests/sec
每秒处理的请求数(QPS)
上面的结果可以看到(Latency Distribution): 50%的请求延时在65.21ms
当然,上面的请求时间只用了1s,理论上请求的时间越长得结果更加准确
使用进阶
模拟POST请求
新建 post.lua
1 | wrk.method = "POST" |
请求:
1 | $ wrk -t 4 -c 100 -d 30s --timeout 10 --script=post.lua --latency http://127.0.0.1/post.php |
通过在脚本中记录日志的方式可以看到$_POST
数据和$_SERVER
中的字段为lua脚本中设置的值.
更为复杂的场景
wrk提供了几个hook函数,可以用lua来编写一些更为复杂场景下的测试需求。
参考资料: