使用wrk進行壓力測試

2022-01-19 23:08:13 字數 1908 閱讀 4265

最近需要對新的服務進行壓力測試。比較了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...