轻量级性能測試工具ab / wrk / locust 分析 & 对比
- 2018-10-19 14:38:00
- istester.com 原創
- 28528
很早前,介紹過4款壓力測試工具
推荐:轻量级web压力測試工具,两分钟上手,轻松压测
今天再推薦下兩款更強大的。
1.
ab
是目前最常见的压力測試工具。其典型用法如下:
shell>
ab -k -n 1000 -c 10
-t 100 /zhichang/177.html
其中,參數「c」表示的是並發,
參數「t」表示的是整個測試持續的時間。
一个很容易被忽视的参数是「k」,它会增加请求头Connection: Keep-Alive,相当于开启了HTTP长连接,这样做一方面可以降低测试服務器 动态端口被耗尽的风险,另一方面也有助于给目标服務器更大的压力,测试出更接近极限的结果。
2.
wrk
相對于ab來說最大的優點是「支持多線程」,
這樣更容易發揮多核CPU的能力,從而更容易測試出系統的極限能力。
其典型用法如下:
shell>
wrk -c 100 -d 10
-t 12 /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 /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上消耗了太多时间,只有知道了瓶颈在哪,才能突破系统的极限。
如上,整理自網絡。
/
推荐几篇曾经的软件测试文章 。
软件测试职业,知识体系大纲 。
記第一次跳槽
測試工程師得力助手之Fiddler抓包進階篇(實戰應用)
找到一份靠譜工作的「十步心法」
軟件測試從業者轉正考核內容
/
IDO老徐
全网同名,个人IP公衆號
日更10年,每天 1 分钟、解决 1 个问题
職場、副業、輕創業、寫作、個人IP
公衆號、視頻號、小红书、知乎
長按/掃碼,關注IDO老徐
關注回複 401 送你「十年原創资料包」
聯系人: | IDO老徐 |
---|---|
Email: | 957863300@qq.com |
QQ: | 957863300 |
微信: | 957863300 |
微博: | isTester |
網址: | idoxu.com |
地址: | 中国 · 广东 · 深圳 |
來源備注:老徐博客