性能測試工具 wrk


一、簡介

  WRK 是一款針對HTTP基准測試工具,即使在單個多核CPU上運行時,也能夠對目標機器產生大量負載。原因是它使用了一些操作系統特定的高性能 io 機制, 比如 select, epoll, kqueue 等。其實它是復用了 redis 的 ae 異步事件驅動框架。說說 wrk 的優缺點吧:

優點:單機並發能力強,極少的線程數即可模擬大量的並發請求。

缺點:不支持分布式,對於上萬用戶的並發測試顯得力不從心。lua 腳本學習成本較高。

 

二、安裝

 執行以下命令:

git clone https://github.com/wg/wrk.git
cd wrk
make
cp wrk /usr/local/bin           # 將可執行文件移動到 /usr/local/bin ,方便調用

 輸入 wrk -v 檢查安裝是否成功

 

三、測試

 一、get 請求

 執行命令:

wrk -t12 -c100 -d10s --timeout=30s --latency https://www.baidu.com

 這條壓測命令代表:12個線程 100個 tcp 持續對 https://www.baidu.com 壓測10s,超時時間為30s

 

壓測結果:

 wrk 各項參數詳解:

-c, --connections       # tcp 連接數
-d, --duration          # 壓測持續時間
-t, --threads           # 線程數
-s, --script            # 指定 lua 腳本
-H, --header            # 為每個HTTP請求添加 hearder
     --latency          # 壓測結束后,打印延時統計信息
     --timeout          # 超時時間
-v, --version           # 打印 wrk 詳細信息 

 

 注意:線程數不易設置的過高,官方建議一般為 CPU 核心數的2到4倍最佳,高了會因頻繁切換線程而降低效率。wrk 不是一個連接對應一個線程的模型,而是通過異步網絡 io 提升並發量,也就說是一個線程能管理創建多個 tcp 連接。這就是 wrk 為什么足夠輕量級,但卻可以模擬出大量 tcp 連接的原因。

 

二、 post 請求

 wrk 支持 lua, post 請求壓測需要借助 lua 腳本,編寫腳本,保存 .lua 格式文件

wrk.method = "POST"

wrk.headers["Content-Type"] = "application/json"

# 需要傳的參數
wrk.body = ""

執行壓測命令:

wrk -t2 -c10 -d5s --timeout=30s --latency  -s post.lua https://xxx.xxx.xxx

 

壓測結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM