前段時間項目壓測,看到開發命令行下使用這個命令進行壓測非常簡潔、方便,萌發了學習的興趣,這里僅做簡單介紹。
安裝
wrk支持大多數UNIX系統,不支持Windows。需要操作系統支持LuaJIT和OpenSSL。
安裝:只需要從github上下載wrk源碼,在項目路徑下make即可。
➜ ~ git clone https://github.com/wg/wrk
Cloning into 'wrk'...
remote: Enumerating objects: 1085, done.
remote: Total 1085 (delta 0), reused 0 (delta 0), pack-reused 1085
Receiving objects: 100% (1085/1085), 27.42 MiB | 633.00 KiB/s, done.
Resolving deltas: 100% (337/337), done.
➜ ~ cd wrk
➜ wrk git:(master) make
Building LuaJIT...
==== Building LuaJI
編譯后,根目錄下會生成可執行文件wrk,可以拷貝到PATH包含目錄中,或者直接將當前目錄添加到PATH,后續就可以直接使用wrk命令。
默認情況下wrk會使用自帶的LuaJIT和OpenSSL。
指定使用系統已經安裝的版本如下:
make WITH_LUAJIT=/usr WITH_OPENSSL=/usr
基本使用
➜ ~ wrk --help
Usage: wrk <options> <url>
Options:
-c, --connections <N> Connections to keep open
-d, --duration <T> Duration of test
-t, --threads <N> Number of threads to use
-s, --script <S> Load Lua script file
-H, --header <H> Add header to request
--latency Print latency statistics
--timeout <T> Socket/request timeout
-v, --version Print version details
Numeric arguments may include a SI unit (1k, 1M, 1G)
Time arguments may include a time unit (2s, 2m, 2h)
選項說明:
- -c,跟服務器建立連接並保持的TCP連接數量
- -d,壓測時長,支持時間單位:s,m,h
- -t,線程數
- -s,指定Lua腳本路徑
- -H, - - header 為每一個HTTP請求添加HTTP頭
- --latency 壓測結束后,打印延遲統計信息
- --timeout 超時時間
- -v,打印版本信息
優點
優點:
- wrk使用方便,結果清晰
- 因為非阻塞IO的使用,可以在普通測試機上創建出大量的連接,從而達到較好的壓測效果
缺點:
- 只能單機壓測,適合簡單場景的快速驗證
其他
支持lua腳本,詳見介紹見:<https://www.cnblogs.com/xinzhao/p/6233009.html