在專案正式上線之前,我們通常需要通過壓測來評估當前系統能夠支撐的請求量、排查可能存在的隱藏bug,同時了解了程式的實際處理能力能夠幫我們更好的匹配專案的實際需求,節約資源成本。
在專案正式上線之前,我們通常需要通過壓測來評估當前系統能夠支撐的請求量、排查可能存在的隱藏bug,同時了解了程式的實際處理能力能夠幫我們更好的匹配專案的實際需求,節約資源成本。
ab全稱apache bench,是apache自帶的效能測試工具。使用這個工具,只須指定同時連線數、請求數以及url,即可測試**或**程式的效能。
通過ab傳送請求模擬多個訪問者同時對某一url位址進行訪問,可以得到每秒傳送位元組數、每秒處理請求數、每請求處理時間等統計資料。
命令格式:
ab [options] [http://]hostname[:port]/path
常用引數如下:
-n requests 總請求數
-c concurrency 一次產生的請求數,可以理解為併發數
-t timelimit 測試所進行的最大秒數, 可以當做請求的超時時間
-p postfile 包含了需要post的資料的檔案
-t content-type post資料所使用的content-type頭資訊
更多引數請檢視官方文件。
例如測試某個get請求介面:
ab -n 10000 -c 100 -t 10 ""
測試post請求介面:
wrk是一款開源的http效能測試工具,它和上面提到的ab
同屬於http效能測試工具,它比ab
功能更加強大,可以通過編寫lua指令碼來支援更加複雜的測試場景。
mac下安裝:
brew install wrk
常用命令引數:
-c --conections:保持的連線數
-d --duration:壓測持續時間(s)
-t --threads:使用的執行緒總數
-s --script:載入lua指令碼
-h --header:在請求頭部新增一些引數
--latency 列印詳細的延遲統計資訊
--timeout 請求的最大超時時間(s)
使用示例:
wrk -t8 -c100 -d30s --latency
輸出結果:
running 30s test @
8 threads and 100 connections
thread stats **g stdev max +/- stdev
latency 14.55ms 2.02ms 31.59ms 76.70%
req/sec 828.16 85.69 0.97k 60.46%
latency distribution
50% 14.44ms
75% 15.76ms
90% 16.63ms
99% 21.07ms
198091 requests in 30.05s, 29.66mb read
requests/sec: 6592.29
transfer/sec: 0.99mb
go-wrk是go語言版本的wrk
,windows同學可以使用它來測試,使用如下命令來安裝go-wrk
:
go get github.com/adeven/go-wrk
使用方法同wrk
類似,基本格式如下:
go-wrk [flags] url
常用的引數:
-h="user-agent: go-wrk 0.1 bechmark\ncontent-type: text/html;": 由'\n'分隔的請求頭
-c=100: 使用的最大連線數
-k=true: 是否禁用keep-alives
-i=false: if tls security checks are disabled
-m="get": http請求方法
-n=1000: 請求總數
-t=1: 使用的執行緒數
-b="" http請求體
-s="" 如果指定,它將計算響應中包含搜尋到的字串s的頻率
執行測試:
go-wrk -t=8 -c=100 -n=10000 ""
輸出結果:
ps g:\goproject\go\bluebell> go-wrk -t=8 -c=100 -n=10000 ""
*************************=benchmark*************************=
url:
used connections: 100
used threads: 8
total number of calls: 10000
*************************==timings*************************==
total time passed: 2.08s
**g time per request: 20.52ms
requests per second: 4797.88
median time per request: 20.61ms
99th percentile time: 41.25ms
slowest time for request: 55.00ms
*************************====data*************************====
total response body sizes: 110000
**g response body per request: 11.00 byte
transfer rate per second: 52776.70 byte/s (0.05 mbyte/s)
*************************=responses*************************=
20x responses: 10000 (100.00%)
30x responses: 0 (0.00%)
40x responses: 0 (0.00%)
50x responses: 0 (0.00%)
errors: 0 (0.00%)
常用的HTTP服務壓測工具介紹
在專案正式上線之前,我們通常需要通過壓測來評估當前系統能夠支撐的請求量 排查可能存在的隱藏bug,同時了解了程式的實際處理能力能夠幫我們更好的匹配專案的實際需求,節約資源成本。在專案正式上線之前,我們通常需要通過壓測來評估當前系統能夠支撐的請求量 排查可能存在的隱藏bug,同時了解了程式的實際處理能...
TCP服務端(cmpp sgip壓測工具)介紹
在做tcp客戶端開發的過程中,大家可能都會遇到服務端不穩定性造成我們客戶端發生錯誤的情況,比如因為網路不好造成socket連線斷開,或者服務端主動關閉了你的連線請求。那麼遇到這種情況你的程式該怎麼處理,對,應該做好斷開自動重連機制,而且要保證自動重連的及時性,以及資源消耗率 cpu佔用率都良好。如果...
Golang的壓測工具 hey
action n 要執行的請求數.預設是200.c 併發執行的請求數.請求的總數不能小於併發級別.預設是50.q 速率限制,以每秒查詢 qps 為單位.預設沒有限制.z 傳送請求的應用程式配置.當時間到了,應用程式停止並退出.如果指定持續時間,則忽略n.例子 z 10s z 3m.o 輸出型別.如果...