前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >轻量级性能测试工具ab / wrk / locust 分析 & 对比

轻量级性能测试工具ab / wrk / locust 分析 & 对比

作者头像
IDO老徐
发布2019-12-11 14:56:04
3.4K0
发布2019-12-11 14:56:04
举报
文章被收录于专栏:简尚简尚

很早前,介绍过4款压力测试工具

推荐:轻量级web压力测试工具,两分钟上手,轻松压测

今天再推荐下两款更强大的。

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上消耗了太多时间,只有知道了瓶颈在哪,才能突破系统的极限。

如上,整理自网络。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 简尚 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
测试服务
测试服务 WeTest 包括标准兼容测试、专家兼容测试、手游安全测试、远程调试等多款产品,服务于海量腾讯精品游戏,涵盖兼容测试、压力测试、性能测试、安全测试、远程调试等多个方向,立体化安全防护体系,保卫您的信息安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档