轻量级性能测试工具ab / wrk / locust 分析 & 对比
- 2018-10-19 14:38:00
- istester.com 原创
- 22922
很早前,介绍过4款压力测试工具
今天再推荐下两款更强大的。
1.
ab
是目前最常见的压力测试工具。其典型用法如下:
shell>
ab -k -n 1000 -c 10
-t 100 http://www.isTester.com/zhichang/177.html
其中,参数「c」表示的是并发,
参数「t」表示的是整个测试持续的时间。
一个很容易被忽视的参数是「k」,它会增加请求头Connection: Keep-Alive,相当于开启了HTTP长连接,这样做一方面可以降低测试服务器 动态端口被耗尽的风险,另一方面也有助于给目标服务器更大的压力,测试出更接近极限的结果。
2.
wrk
相对于ab来说最大的优点是「支持多线程」,
这样更容易发挥多核CPU的能力,从而更容易测试出系统的极限能力。
其典型用法如下:
shell>
wrk -c 100 -d 10
-t 12 http://www.isTester.com/zhichang/177.html
其中,参数「c」表示的是并发,参数「d」表示的是整个测试持续的时间。此外,可以通过参数「t」来控制线程数(缺省值为2),实际使用中可以视情况酌情增大。
如果顺着ab的使用惯性,你可能会纳闷为什么wrk没有类似参数「k」这样打开HTTP长链接的选项,这是因为wrk使用的是 HTTP/1.1,缺省开启的是长连接,而ab使用的是HTTP/1.0,缺省开启的是短链接。
不过这也引出另一个问题,如何用wrk测试短链接?实际上很简单:
shell>
wrk -H "Connection: Close" -c 100 -d 10
-t12 http://www.isTester.com/zhichang/177.html
通过参数「H」传递一个自定义的Connection请求头来关闭长链接。
此外,wrk支持自定义脚本编程,有兴趣,自行查阅 。
3.
locust
相对于ab、wrk来说最大的优点是它不再只是测试一个url,而是可以测试一个「自定义的场景」,其中可以包含多个有相互关联的url
此外,它还是分布式可扩展的,可以模拟大量用户的访问,由此可以得到更贴近真实环境的测试数据。
关于locust的具体用法有点复杂,可以自行查阅官方文档。
/
除了ab,wrk,locust等压力测试工具之外,还有很多其它选择,其中比较有代表性的是 GoReplay 和 TcpCopy,
可以拷贝线上服务器的真实流量并转发到测试服务器上去,用真实流量来测试,如此得到的数据无疑是更可信的。
不过它们的用法更复杂…
补充,
说说压力测试过程中一些注意事项:
1. 首先,在使用ab或者wrk的时候,最好在同一个局域网里独立的服务器上运行,因为这些压力测试工具本身也会消耗系统资源。
2. 其次,即便使用了长连接,那么也应该注意端口 TIME_WAIT 问题,视情况可能需要在sysctl配置中开启 tcp_tw_recycle或 tcp_tw_reuse之类的选项;
3. 最后,在压力测试过程中,最好时刻留意哪些资源成为了瓶颈,比如:CPU是不是跑满了,IO是不是跑满了,带宽是不是跑满了等等。
如果什么都没跑满,但是压力测试结果却上不去,那么就需要反思一下是不是压力测试工具使用方法有误,或者是不是在off-CPU上消耗了太多时间,只有知道了瓶颈在哪,才能突破系统的极限。
如上,整理自网络。
/
推荐几篇曾经的软件测试文章 。
/
推荐阅读 :软件测试25条职业发展方向 / 21天搞定Linux / Linux部署 / 600位测试工程师现状
1. 所有文章,均为IDO老徐原创(免费学习,欢迎收藏、转发),博客地址 isTester.com
2. 顶部菜单,按栏目查询,可快速检索你需要的所有文章 。看完文章还有不明白的,微信联系 IDO老徐
100 个实战小项目,少亏钱,多赚钱
送《一人企业复利商业化》实体书(包邮)
365 * 24 随时向 IDO老徐 免费提问
微信 957863300
- 软件测试从业者知识体系大纲(脑图)
- 软件测试工程师需要掌握的SQL命令合集(21天掌握)
- 电子书:软件测试综合能力提升@IDO老徐
- 如何选择一台适合日常学习的Linux云服务器 ?
- Centos 下mysql数据库完整安装过程
- 所有你要的软件测试资料打包送上(最新)
- 21天,搞定软件测试从业者必备的Linux命令(完整篇)
- Linux 下 部署 禅道(zentao)项目管理系统
- Mysql安装,解决 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 问题
- git 查看本地仓库,对应的“远程仓库地址”
想了解更多 ?
所有原创软件测试文章都在这
有近10W 软件测试工程师关注
助力「软件测试从业者综合能力提升」
关注后,回复 666 有惊喜
长按/扫码 关注@简尚
我的个人微信 957863300
IDO老徐
全网同名,个人IP公众号
日更10年,每天 1 分钟、解决 1 个问题
职场、副业、轻创业、写作、个人IP
公众号、视频号、小红书、知乎
长按/扫码,关注IDO老徐
关注回复 401 送你一份资料包
联系人: | IDO老徐 |
---|---|
Email: | 957863300@qq.com |
QQ: | 957863300 |
微信: | 957863300 |
微博: | isTester |
网址: | isTester.com |
地址: | 中国 · 广东 · 深圳 |