上一篇博文介紹了我們的輕量級性能測試工具,本篇我們開始進行輕量級性能測試工具wrk的使用學習(基礎篇)。
1.簡單使用
wrk -t 12 -c 400 -d 30s http://www.baidu.com
這條命令表示,利用wrk對www.baidu.com發起壓力測試,線程數爲12,模擬400個併發請求,持續30秒。
2.wrk子命令參數說明
除了上面簡單示例中使用到的子命令參數,wrk還有其他更豐富的功能,命令行中輸入wrk --help,可以看到支持以下命令:
轉化成中文表示爲:
[root@VM_0_5_centos ~]# wrk --help
使用方法: wrk <選項> <被測HTTP服務的UTR>
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)
其中,關於線程數,並非設置的越大,壓測效果越好,線程設置過大,反而會導致線程切換過於頻繁,效果降低,一般來說,推薦設置成壓測機器CPU核心數的2倍到4倍。查看CPU核數量可使用:
cat /proc/cpuinfo| grep "processor"| wc -l
3.測試報告
執行壓測命令:
wrk -t12 -c400 -d30s --latency http://www.baidu.com
執行上面的壓測命令,30s壓測過後,生成如下壓測報告:
測試結果如上圖,說明如下:
Running 30s test @ http://www.baidu.com (壓測時間30s)
12 threads and 400 connections (共12個測試線程,400個連接)
(平均值) (標準差)(最大值)(正負一個標準差所佔比例)
Thread Stats Avg Stdev Max +/- Stdev
(延遲)
Latency 59.47ms 28.51ms 596.70ms 89.91%
(每秒請求數)
Req/Sec 61.65 69.18 343.00 88.47%
Latency Distribution (延遲分佈)
50% 51.20ms
75% 60.71ms
90% 88.29ms
99% 179.64ms
16088 requests in 30.08s, 238.98MB read (30.08s內處理了16088個請求,耗費流量73.86MB)
Socket errors: connect 0, read 61, write 365, timeout 0 (發生錯誤數)
Requests/sec: 534.89 (QTP 534.89,即平均每秒處理請求數爲534.89)
Transfer/sec: 7.95MB(平均每秒流量7.95M)
其中:
1.標準差若太大說明樣本本身離散程度比較高,有可能系統性能波動較大。
2.延遲分佈代表,例如:50% 218.31ms -- 50%的請求在218.31ms內讀取完畢。