今天主要介绍一款高效的性能测试工具wrk.wrk的使用方式和apache bench这些工具也大体相似,通过命令行的方式即可发起。但是wrk比apache bench更起为高效,因为它支持多线程,更容易发挥多核CPU的能力,甚至可以压满CPU.wrk还支持Lua脚本来提供更多的参数定制,参数加密等需求,灵活度更高。
<>强安装强>
wrk支持大部分UNIX系统,不支持windows系统。安装过程比较简单,从github克隆项目到本地,再在项目路径下使即可,在此就不详述,具体可查看github文档。
<>强基础使用强>
wrk -t12 -c400 -d30s http://127.0.0.1:80/index . html
以上命令行表示对本80年地端口的指数。html文件发起请求,压测时间持续30秒,并发12线程,保持400个HTTP连接请求。
输出结果:
Running 30 s test @ http://127.0.0.1:80/index . html 12,才能threads 以及400年,连接 Thread 才能;Stats ,, Avg ,,,,, Stdev ,,,, Max ,, +/安康;方差 ,,,Latency ,,, 90.43小姐,小姐的201.95,,1.99 s ,, 88.34% ,,,要求/Sec ,,,, 1.79 k ,,,, 1.80 k ,, 21.57 k ,, 89.17% 577891,才能requests 30.09 s,拷贝,188.46 mb 阅读 错误:Socket 才能;connect 0,, read 0,, write 0, timeout 37 3 Non-2xx 才能,或是xx 反应:577891 请求/秒:19202.50 转/秒:,,,,,,6.26 mb
结果展示了本次压测的请求平均延迟延迟,每秒每线程平均请求数请求/秒,合计的每秒请求数请求/秒和每秒吞吐量转移/秒等。这些数据即可反映出压测服务器的大概响应情况,以对服务器性能做初步判断。
贴一下请求的命令参数:
- c,,,连接:,total number of HTTP connections 用keep open ,,,,,,,,,,,,,,,,,,each thread handling N =,连接/线程 - d,,,时间:,,,,duration of 从而测试,如只2 s, 2米2 h - t,——线程:,,,,,total number of threads 用使用 - s,——脚本:,,,,,,LuaJIT 脚本,阅读脚本 - h,——头:,,,,,,HTTP header 用add 用请求,,如只“用户代理:,wrk" ,,,,延迟:,,,,,print detailed latency 统计数据 ,,,,超时:,,,,,record a timeout if a response is not received 内 ,,,,,,,,,,,,,,,,,,却;能够amount of 时间。
关于长连接和短连接:apache bench默认短连接,wrk默认长连接.wrk如需测试短连接,可添加,- h“连接:接近”,来关闭长连接。
<强>文章请求强>
wrk不仅能发起对得到请求,也能通过Lua脚本发起帖子请求。如编写post.lua脚本:
wrk.method =,“POST" wrk.headers [“Content-Type"],=,“应用程序/x-www-form-urlencoded" wrk.body =,“youbody& youset"
在脚本中定义了帖子请求的头部和身体。执行wrk请求时加上- script指定该脚本:
wrk -t4 -c2000 -d60s -T5s ——脚本=post.lua ——latency http://127.0.0.1:80/user/登录
如此,便可轻松实现岗位请求的压测。
<强>后续强>
wrk作为一种高效的性能测试工具,可以作为一种常用手段对待测url发起请求。本文只是初步介绍了引用Lua脚本执行帖子请求,Lua脚本其实可以实现更为丰富的测试需求,下一次我们再详细看下Lua脚本如何为wrk添翼。