性能測試之 wrk

# 安裝 make 工具

sudo apt-get install make

# 安裝 gcc編譯環境

sudo apt-get install build-essential

git clone https://github.com/wg/wrk

cd /wrk目錄

make

linux

root@chaitin-safeline:~/wrk# ./wrk -c 1000 -d 30 -t 32http://1.1.1.252

mac

cd wrk-master

wrk -c 100 -d 30 -t 5http://1.1.1.2

# 使用方法: wrk <選項><被測HTTP服務的URL>? Options:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? -c, --connections <N>? 跟服務器建立并保持的TCP連接數量?

? ? -d, --duration? ? <T>? 壓測時間(s)? ? ? ? ?

? ? -t, --threads? ? <N>? 使用多少個線程進行壓測(根據 cpu 幾核)

? ? -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"

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 (99分位的延遲)? 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)(最大吞吐)

-H "Connection: Close"

請求后連接關閉,所以一個連接只有一個請求

如果是keep-alive,一個連接可以有多個請求

標準差如果太大說明樣本本身離散程度比較高. 有可能系統性能波動很大

https://www.cnblogs.com/jiftle/p/7158291.html

-t 一般根據 cpu 數量來定,一般是 cpu 的整數倍

-c 一般是一個線程 100 個

-t 1 -c 100? Requests/sec 為 cps(每秒連接數)

-t 12 -c 1200 Requests/sec 為 qps(四核)

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容