一、簡介:
是一款針對協議的基準測驗工具,它能夠在單機多核的條件下,使用系統自帶的高性能機制,通過多執行緒和事件模式,對目標機器產生大量的負載,- 優勢
- 輕量級性能測驗工具
- 安裝使用簡單
- 基于系統自帶的高性能I/O機制,如epoll,kqueue,利用異步的事件驅動框架,通過很少的執行緒就可以壓出很大的并發
- 劣勢
- wrk 目前僅支持單機壓測,不是用來取代 JMeter, LoadRunner 等專業的測驗工具,
二、引數說明
Usage: wrk <options> <url>
Options:
-c, --connections <N> 跟服務器建立并保持的TCP連接數量
-d, --duration <T> 壓測時間
-t, --threads <N> 使用多少個執行緒進行壓測
-s, --script <S> 指定Lua腳本路徑
-H, --header <H> 為每一個HTTP請求添加HTTP頭
--latency 在壓測結束后,列印延遲統計資訊
--timeout <T> 超時時間
-v, --version 列印正在使用的wrk的詳細版本
Numeric arguments may include a SI unit (1k, 1M, 1G)
Time arguments may include a time unit (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個請求) Transfer/sec: 22.79MB (平均每秒讀取資料22.79MB)
wrk -t1 -c4 -d100s -T3s --script=post.lua --latency http://localhost:8080/xtopic/news
post.lua腳本檔案
paramArr = {}
falg = 0
-- 初始化
function init(args)
for line in io.lines("requestParams.txt") do //requestParams.txt 請求引數檔案
print(line)
paramArr[falg] = line
falg = falg+1
end
end
-- 請求
function request()
local headers = { }
headers['Content-Type'] = "application/json"
body = paramArr[math.random(0,table.getn(paramArr))]
return wrk.format("POST",nil,headers,body)
end
-- 回應
function response(status,headers,body)
if(status ~= 200)
then
print("response===error",status,body)
else
print("response===success",status,body)
end
end
三、wrk內置函式
wrk中執行http請求的時候,呼叫lua分為3個階段,setup,running,done,每個wrk執行緒中都有獨立的腳本環境

參照:https://my.oschina.net/u/2512041/blog/4595155 https://www.runoob.com/lua/lua-tutorial.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/274353.html
標籤:其他
