介紹
wrk支持UNIX系統,不支持windows
使用了epoll,這意味着我們可以用少量的線程來跟被測服務創建大量連接,進行壓測
安裝
只要從github上下載wrk源碼,在項目路徑下執行make命令即可。
git clone https://github.com/wg/wrk
make
make之後,會在項目路徑下生成可執行文件wrk,隨後就可以用其進行HTTP壓測了
基本使用
命令行敲下wrk,可以看到使用幫助
Options:
-c, --connections <N> 跟服務器建立並保持的TCP連接數量
-d, --duration <T> 壓測時間
-t, --threads <N> 使用多少個線程進行壓測
-s, --script <S> 指定Lua腳本路徑
-H, --header <H> 爲每一個HTTP請求添加HTTP頭
--latency 在壓測結束後,打印延遲統計信息
--timeout <T> 超時時間
-v, --version 打印正在使用的wrk的詳細版本信息
<N>代表數字參數,支持國際單位 (1k, 1M, 1G)
<T>代表時間參數,支持時間單位 (2s, 2m, 2h)
簡單壓測
wrk -t8 -c200 -d30s --latency "http://www.bing.com"
以上使用8個線程保持200個連接,對bing首頁進行了30秒的壓測,並要求在壓測結果中輸出響應延遲信息。以下對壓測結果進行簡單註釋
輸出:
Running 30s test @ http://www.bing.com (壓測時間30s)
8 threads and 200 connections (共8個測試線程,200個連接)
Thread Stats Avg Stdev Max +/- Stdev
(平均值) (標準差)(最大值)(正負一個標準差所佔比例)
Latency 46.67ms 215.38ms 1.67s 95.59%
(延遲)
Req/Sec 7.91k 1.15k 10.26k 70.77%
(處理中的請求數)
Latency Distribution (延遲分佈)
50% 2.93ms
75% 3.78ms
90% 4.73ms
99% 1.35s
1790465 requests in 30.01s, 684.08MB read (30.01秒內共處理完成了1790465個請求,讀取了684.08MB數據)
Requests/sec: 59658.29 (平均每秒處理完成59658.29個請求,也就是qps)
Transfer/sec: 22.79MB (平均每秒讀取數據22.79MB)