效能壓測工具 —— wrk

程序员潇潇發表於2024-03-15

一般我們壓測的時候,需要了解衡量系統效能的一些引數指標,比如。

1、效能指標簡介

1.1 延遲

簡單易懂。green:一般指響應時間

95線:P95。平均100%的請求中95%已經響應的時間

99線:P99。平均100%的請求中99%已經響應的時間

平均響應時間:所有請求的平均響應時間

最大響應時間:所有請求中最大的響應時間

1.2 吞吐量

簡單易懂。green:即每秒處理的請求數量

對於查詢搜尋類的系統使用每秒處理的請求數(QPS)來衡量吞吐能力。

一般對於交易類的系統使用每秒處理的事務數(TPS)來衡量吞吐能力。

TPS:每秒處理的事務數(比如每秒處理的訂單數)

QPS:每秒處理的請求數

1.3 系統容量

也叫做設計容量,可以理解為硬體配置(記憶體,cpu什麼的),成本約束

2、壓測工具 wrk

wrk 是一款針對 Http 協議的基準測試開源工具,它能夠在單機多核 CPU 的條件下,使用red:系統自帶的高效能 I/O 機制,如 epoll,kqueue 等,透過多執行緒和事件模式,對目標機器產生大量的負載。

wrk 目前僅支援單機壓測,後續也不太可能支援多機器對目標機壓測。

因為它本身的定位,並不是用來取代 JMeter, LoadRunner 等專業的測試工具,wrk 提供的功能,對後端開發人員來說,應付日常介面效能驗證還是比較友好的。

wrk 只能被安裝在類 Unix 系統上,所以我們需要一個 Linux 或者 MacOS 環境。Windows 10 安裝需要開啟自帶的 Ubuntu 子系統。

3、使用 wrk

使用方法: wrk <選項> <被測HTTP服務的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的詳細版本資訊

<N>代表數字引數,支援國際單位 (1k, 1M, 1G)

<T>代表時間引數,支援時間單位 (2s, 2m, 2h)

3.1 命令簡單的壓測

簡單進行一次壓測,用10個執行緒,200個連線,對百度進行30s的壓測。

以下是對壓測結果  

wrk -t 10 -c 200 -d 30s --latency http://www.baidu.com



# 30s內測試百度的結果如下:

Running 30s test @ http://www.baidu.comm/



# 用12個執行緒 400個連線測試

12 threads and 400 connections



  Latency Distribution

  # 響應時間-延遲分佈明細

  # 有50%的請求執行時間是在64.42ms內完成

  50% 64.42ms

  

  # 30秒內功處理了 149798 個請求,

  讀取了 241.85MB 的資料

  149798 requests in 30.09s, 241.85MB read



 # QPS 4977.65, 即平均每秒處理請求數為4977.65 

 可以參考吞吐量。

 Requests/sec: 4977.65



# 平均每秒讀取 8.04M 的資料

Transfer/sec: 8.04MB

3.2 編寫壓測指令碼

首先需要準備一個 lua 檔案,比如名為 test-postapi.lua ,寫入如下內容。

### 請求方式

wrk.method = "POST"



### 設定 請求型別

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



### POST 請求引數

wrk.body = '{"username": "13999999999","username": "13999999999"}'

這個檔案內容自己寫,寫好介面內容後儲存。

3.3 執行指令碼

以下是模擬6個執行緒,600個連線,在60s內,間隔6s 執行 test-postapi.lua 指令碼的請求。

# 進入wrk執行檔案目錄

# --script 引數的值為指令碼名

# --latency 引數的值為介面地址

./wrk -t6 -c600 -d60s --script=test-postapi.lua --latency http://api.xxxdev.com/enterprise/user/login

最後感謝每一個認真閱讀我文章的人,禮尚往來總是要有的,這些資料,對於【軟體測試】的朋友來說應該是最全面最完整的備戰倉庫,雖然不是什麼很值錢的東西,如果你用得到的話可以直接拿走:

如果你想學習軟體測試和需要軟體測試資料,歡迎加入扣扣交流群:731789136,裡面可以免費領取軟體測試+自動化測試資料+軟體測試面試寶典+簡歷模版+實戰專案+面試刷題工具和大佬答疑解惑,我們一起交流一起學習!

相關文章