wrk 安装与使用
条评论简述
wrk 和 apache benchmark(ab)同属于性能测试工具, 但是比 ab 功能更加强大,还可以支持lua脚本来创建复杂的测试场景。
wrk 的一个很好的特性就是能用很少的线程压出很大的并发量, 原因是它使用了一些操作系统特定的高性能 I/O 机制, 比如 select, epoll, kqueue 等。 其实它是复用了 redis 的 ae 异步事件驱动框架. 确切的说 ae 事件驱动框架并不是 redis 发明的, 而是来自于 Tcl的解释器 jim, 这个小巧高效的框架, 因为被 redis 采用而更多的被大家所熟知.
安装
准备条件
- 确保linux上已经安装了 make工具 (sudo apt-get install make)
- GCC 编译环境(sudo apt-get install build-essential)
安装
安装 luajit
sudo apt-get install build-essential libssl-dev git git clone http://luajit.org/git/luajit-2.0.git cd luajit make && sudo make install
然后下载wrk的源码
git clone https://github.com/wg/wrk.git cd wrk
在上一步下载的 luajit 代码中,有一个 jit 文件夹,需要复制到 wrk 目录下
执行
make
执行编译后,生成wrk文件
make
# move the executable to somewhere in your PATH
sudo cp wrk /usr/local/bin
使用方法
执行简单的命令
./wrk -t4 -c1000 -d10s -T30s --latency http://www.baidu.com
执行结果:
简要说明下wrk的参数的含义
- -t 线程数
- -c 连接数
- -d 测试持续时间
- -T 超时时间
- –latency 响应的分布时间
响应结果的参数含义:
Latency:响应时间
Req/Sec:每秒请求数量,也就是并发能力
Avg:平均
Max:最大
Stdev:标准差
+/- Stdev: 正负一个标准差占比
Latency: 响应的分布时间
注意:模拟测试的时候,一般线程数不宜过多,核数的2到4倍足够了。 多了反而因为线程切换过多造成效率降低, 因为 wrk 不是使用每个连接一个线程的模型, 而是通过异步网络 I/O 提升并发量。 所以网络通信不会阻塞线程执行,这也是 wrk 可以用很少的线程模拟大量网路连接的原因。
支持lua脚本
这块内容只是简单了解了下,还是很强大,等用到后,在做笔记吧~
- 用人不在于如何减少人的短处, 而在于如何发挥人的长处。 –彼得.德鲁克 (管理学之父)