在做web服務開發(fā)時,一般會做服務壓力測試。本文介紹兩款簡單、易用的HTTP壓測工具,便于研發(fā)壓測服務,明確服務臨界值,尋找服務瓶頸點。壓測時可重點關注以下指標,并發(fā)用戶數(shù)、TPS(每秒事務數(shù)量)、RT(事務響應時間)、事務失敗率、吞吐量、CPU(不要超過70%)和內(nèi)存占用量。
一、ab壓測工具
ab就是Apache Benchmark的縮寫,顧名思義它是Apache組織開發(fā)的一款web壓力測試工具,優(yōu)點是使用方便,統(tǒng)計功能強大。使用:命令格式:ab -n 100 -c 10 'http://10.34.216.49:8000/test'
參數(shù)說明:ab一般常用參數(shù)就是 -n, -t ,和 -c。u-c(concurrency)表示用多少并發(fā)來進行測試;連接數(shù)。u-t表示測試持續(xù)多長時間。u-n表示要發(fā)送多少次測試請求。u一般-t或者-n選一個用。u默認情況,ab使用的是HTTP的GET請求進行測試。
優(yōu)點:小巧。理論支持655350并發(fā)數(shù)。實際上,超過10000就跑不下去,實驗證明支持的最高并發(fā)數(shù)約為5000。使用簡單方便,一行指令即可?删_控制請求次數(shù):一些特殊場景會有此類需求。
缺點:無法直接在命令行測試不同url,只能測試一個url。輸出結(jié)果格式無法修改。
二、Wrk工具
wrk 是一個很簡單的 http 性能測試工具,也可以叫做 http benchmark 工具。只有一個命令行,就能做很多基本的 http 性能測試。wrk 是開源項目,代碼在 github 上:wrk 只能運行在類Unix 的系統(tǒng)上。使用:命令格式:wrk <選項> <被測HTTP服務的URL> 。
參數(shù)說明:-c, --connections <N> 跟服務器建立并保持的TCP連接數(shù)量; -d, --duration <T> 壓測時間;
-t,--threads <N>使用多少個線程進行壓測;
-s,--script <S> 指定Lua腳本路徑;
-H, --header <H> 為每一個HTTP請求添加HTTP頭;
--latency 在壓測結(jié)束后,打印延遲統(tǒng)計信息;
--timeout <T> 超時時間;
u-v,--version打印正在使用的wrk的詳細版本信息;
<N>代表數(shù)字參數(shù),支持國際單位 (1k, 1M, 1G);
<T>代表時間參數(shù),支持時間單位 (2s, 2m, 2h)。
優(yōu)點:并發(fā)度高。簡單易用。使用Lua腳本可對wrk的初始化、請求和結(jié)果做二次開發(fā)。
缺點:并發(fā)訪問請求數(shù)量計數(shù)有些不準,上50萬的請求數(shù)量,一般會少幾百到兩千條左右。無法精確控制請求個數(shù)。無法像jmeter一樣做持續(xù)平穩(wěn)的壓力訪問,不太適合做穩(wěn)定性測試。適合模擬訪問峰值壓力測試。