阿里雲PTS分享-用性能測試工具JMeter實現基於供應鏈業務上對於WebSocket 協議的壓測


性能測試PTS(Performance Testing Service)是面向所有技術相關背景人員的雲化性能測試工具,孵化自阿里內部平台。有別於傳統工具的繁復,PTS以互聯網化的交互,面向分布式和雲化的設計,更適合當前的主流技術架構。無論是自研還是適配開源的功能,PTS都可以輕松模擬大量用戶訪問業務的場景,任務隨時發起,免去搭建和維護成本。更是緊密結合監控類產品提供一站式監控、定位等附加價值,高效檢驗和管理業務性能。

 

腳本工具:Apache JMeter

壓測平台: PTS

 

測試目的

供應鏈客戶端往往由於生產環境復雜,會產生卡頓現象,故展開本次調優性能測試境產生卡頓現象,通過壓測來了解網關是否存在問題。

測試原則

1.   選擇用戶使用頻率較高的業務功能

2.   選擇用戶核心業務功能

3.   監控和分析系統各服務器的性能,同時也包括應用服務器的性能問題

4.   重點分析交易的響應時間,即客戶端發起請求,到應用服務器返回結果到客戶端的時間,包括網絡傳輸的時間,但不包括客戶端應用程序處理返回結果的時間。

測試方法

利用Jmeter模擬前台客戶端發起Socket協議請求,即在每個測試用例中,由Jmeter發送前台應用程序的Socket報文到后台應用服務器,測試后台應用服務器和數據庫服務器處理客戶端應用請求的能力。

測試指標

1、交互相關

  • 交互數量
  • 交互響應時間

2、應用服務器相關

  • CPU使用率
  • 內存使用率

測試環境

本次性能測試在uat環境中執行,使用單網關、單服務器進行壓測。

生產環境目前是10個網關,8台服務器。

測試數據量

在生產環境中已增加以下業務數據,並在測試用例中挑選有代表性的業務數據進行測試:

編號

業務類型

業務數據量

1

登錄

300

2

序列號掃描

300

 3

訂單查詢

50

 4

包裝號校驗

300

 5

組建序列號掃描

300

測試腳本的創建

  1. 將一個線程組添加到測試計划中,單擊測試計划 > 添加 > Thread (Users) > 線程組
  2. 在線程組中添加采樣器(Sampler),單擊線程組 > 添加 > Sampler > 對應的 Sampler,並配置每個 Sampler。
  3. 在線程組中添加監聽器 View Results Tree
  4. 運行腳本。通過 View Results Tree 監聽器查看腳本是否運行正常。

WebSocket Open Connection

將 WebSocket Open Connection Sampler 添加到線程組。單擊線程組 > 添加 > Sampler > WebSocket Open Connection

如何安裝 JMeter-WebSocketSampler

下載最新的 JMeter-WebSocketSampler,如 JMeterWebSocketSamplers-1.2.1.jar。

將該文件放置到 JMeter 的安裝目錄(…/lib/ext)下。

重啟 JMeter。

如果插件安裝成功,JMeter GUI 中可看到以下新增的選項:

  1. 配置元件選項(Config Element):WebSocket Binary Frame Filter、WebSocket Text Frame Filter 和 WebSocket Ping/Pong Frame Filter;
  2. 斷言選項(Assertions):Binary Response Assertion;
  3. 察看結果樹選項(View Results Tree):Binary;

 

說明:我們以 Gateway Echo 服務來創建我們的腳本(ws://echo.websocket.org)。這是一個Echo 服務,因此發送到此服務的所有消息都將回顯給客戶端。

當前的 Sampler 將建立 WebSocket 連接。相關的配置如下:

配置項

示例值

說明

協議

WS

協議可以是 WS 或 WSS(Secure WebSocket)。使用 WSS 進行加密連接。

Server name or IP

echo.websocket.org

域名 或 IP

Port

80

端口

Path

( 空)

可為空

Connection timeout(ms)

20000

建連的超時時間。

Read timeout(ms)

6000

等待服務器響應的超時時間。

WebSocket Ping / Pong

將 WebSocket Ping / Pong Sampler添加到線程組,單擊線程組 > 添加 > Sampler > WebSocket Ping/Pong。該Sampler用來測試 Ping/Pong 功能。

 

相關配置如下:

  • Pong(讀)超時(ms):6000

Pong 超時表示如果 JMeter 在 6 秒內沒有收到 Pong 消息,則 Sampler 將失效。此 Sampler 會復用已有連接。

WebSocket request-response Sampler

將 WebSocket request-response Sampler 添加到線程組,單擊線程組 > 添加 > Sampler > WebSocket request-response Sampler。該 Sampler 將用於發送文本的一個數據幀並從服務端接收應答。

 

相關配置如下:

配置項

示例值

說明

Connection

use existing connection

創建新的連接或復用已有連接。

數據類型

文本

指定數據類型、請求數據和響應超時值。

Request data

PTS

請求數據,這里以文本為例

Response(read)timeout(ms)

6000

響應超時時間

WebSocket Single Write Sampler

將 WebSocket Single Write Sampler 添加到線程組,單擊線程組 > 添加 > Sampler > WebSocket Single Write Sampler 此請求是非阻塞的,只是將數據發送到服務端不需要等待響應。

 

相關配置如下:

配置項

示例值

說明

Connection

use existing connection

創建新的連接或復用已有連接

數據類型

文本

指定數據類型、請求數據和響應超時值

Request data

PTS

請求數據,這里以文本為例

Response(read)timeout(ms)

6000

響應超時時間

WebSocket Single Read Sampler

將一個 WebSocket Single Read Sampler 添加到線程組,單擊線程組 > 添加 > Sampler > WebSocket Single Read Sampler。接收服務端的消息響應需要使用這個 Sampler。

 

配置以下參數:

配置項

示例值

說明

Connection

use existing connection

創建新的連接或復用已有連接

數據類型

文本

指定數據類型、請求數據和響應超時值

Response(read)timeout(ms)

6000

響應超時時間

WebSocket Close

將一個WebSocket Close Sampler添加到線程組,單擊線程組 > 添加 > Sampler > WebSocket Close

配置以下參數:

配置項

示例值

說明

關閉狀態

二進制

關閉連接時定義的狀態碼,數據幀的頭兩個字節

響應(讀取)超時(毫秒)

6000

/

此采樣器將關閉現有的 WebSocket 連接,由於是協商關閉,顯示原因為 “1000:sampler requested close”。

使用 View Results Tree 查看結果

  1. 將 View Results Tree 監聽器添加到線程組,單擊線程組 > 添加 > 監聽器 > View Results Tree
  2. 運行腳本!

通過 View Results Tree 監聽器,檢查所有 Sampler 是否都配置正確並符合預期。在該監聽器中,如果 Sampler 前面有綠色勾表示運行正常。下面羅列一些截圖:

 上傳到PTS

將調試好的 JMeter 腳本(XML 文件)、JMeter-WebSocketSampler 的 JAR 文件和其他數據文件(如有)上傳到 PTS,設置並發數和壓測時間,單擊保存並壓測便可開始壓測。


免責聲明!

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



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