最近需要對新的服務進行壓力測試。比較了ab和jemeter以及wrk。最終選擇wrk來作為壓力測試工具,可以把cpu壓到100%。
官方原始碼:
git clone
make
-- 拷貝wrk到bin
cp wrk /usr/sbin/wrk
具體介紹參考:
這裡主要用到乙個簡單的用法:指定執行緒數,連線數,壓測時間,隨機引數
wrk -t100 -c1000 -d30s --latency ""
使用方法: wrk 《選項》 《被測http服務的url>
options:
-c, --connections 跟伺服器建立並保持的tcp連線數量
-d, --duration 壓測時間
-t, --threads 使用多少個執行緒進行壓測
-s, --script 指定lua指令碼路徑
-h, --header 為每乙個http請求新增http頭
--latency 在壓測結束後,列印延遲統計資訊
--timeout 超時時間
-v, --version 列印正在使用的wrk的詳細版本資訊
代表數字引數,支援國際單位 (1k, 1m, 1g)
代表時間引數,支援時間單位 (2s, 2m, 2h)
指定請求req指令碼即可。lua語法簡單了解一下即可。
wrk -t100 -c1000 -d30s -s req.lua --latency ""
req.lua
request = function()
local lg1 = math.random(103, 119)
local lg2 = math.random(0, 999999)
local lat1 = math.random(23, 40)
local lat2 = math.random(0, 999999)
local path = "/api/v1/location/point?thepointnum=3&lonlat=" .. lg1 .. "." .. lg2 .. "," .. lat1 .. "." .. lat2
return wrk.format(nil, path)
end--[[ 以下可以在簡單測試的時候列印結果,驗證,但若是效能測試,需要注釋掉 ]]
response = function(status, headers, body)
print(body)
end
首先需要準備乙個lua檔案
當然這個指令碼內容可以再次定義,具體檢視wrk的git文件
執行指令碼
wrk -t4 -c2000 -d60s -t5s --script=post.lua --latency
這樣就是模擬4個執行緒,2000個連線,在60s內,間隔5s 執行 post.lua 的請求
你可以擴充套件一下,製作 shell 指令碼來批量測試各種介面
如測試post json:
使用wrk進行http壓力測試
最近做了一些伺服器的工作,在做http壓力測試時,先是使用ab,發現mac上總是頻繁出現各種問題,eg apr socket recv connection reset by peer 54 等等 最後切到了wrk,簡單易用,功能強大,可以支援lua指令碼來建立複雜的測試場景推薦給大家。wrk只能執...
wrk 工具進行壓力測試
wrk 工具進行壓力測試非常方便簡單,且能滿足基本功能 git clone 安裝 進入wrk 目錄,執行 make,將編譯出來的 mrk檔案拷貝到 path 的乙個路徑下 可以全域性訪問 成功以後在目錄下有乙個 wrk檔案,將這個檔案防止到你的軟體目錄,配置好環境變數即可,這裡就不細說了 cp到 u...
使用ab進行壓力測試
ab是apache自帶的乙個很好用的壓力測試工具,當安裝完apache的時候,就可以在bin下面找到ab 1 我們可以模擬100個併發使用者,對乙個頁面傳送1000個請求 ab n1000 c100 其中 n代表請求數,c代表併發數 返回結果 首先是apache的版本資訊 this is apach...