websocket接口性能測試

websocket 性能關注點

性能測試針對不同協議,關注的指標還是會略有不同。對於基於websocket協議開發的系統,性能測試關注點側重於連接數(可以建立多少個併發連接)和連接處理能力(模擬websocket併發地發消息)。因此,設計以下三個場景:

場景1: 大量鏈接的創建和關閉——不斷模擬大量用戶對Websocket鏈接的創建、關閉過程。

場景2: 長時間保持大量連接——創建大量鏈接,保持鏈接較長時間。

場景3:大量推送消息——可以少量鏈接較長時間保持,不斷觸發消息推送

JMeter

默認情況下,jmeter是沒有websocket的sampler請求的,需要自己去擴展。
JMeterWebSocketSampler-1.0.2-SNAPSHOT.jar

插件地址:https://github.com/maciejzaleski/JMeter-WebSocketSampler

插件依賴一下幾個jar包
1、jetty-http-9.1.2.v20140108.jar
2、jetty-io-9.1.2.v20140108.jar
3、jetty-util-9.1.2.v20140108.jar
4、websocket-api-9.1.1.v20140108.jar
5、websocket-client-9.1.1.v20140108.jar
6、websocket-common-9.1.1.v20140108.jar

下載地址:https://github.com/maciejzaleski/JMeter-WebSocketSampler/issues/12
將這些jar包和插件,把它們拷貝到Jmeter目錄的\lib\ext\目錄下,重啓jmeter。

 

組件介紹

 

1、WebServer

(1)Server Name or IP:WebSocket發送的目標服務器的地址或者名稱
(2)Port Number:WebSocker服務器監聽的端口號。
2、Timeout: 
(1)Connection發送一個連接請求後,Jmeter等待連接完成的最長時間,單位是毫秒,若超過時間未建立,則sampler失敗。
(2)Response對響應消息的最大等待時間,到達設定時間後websocket 鏈接關閉。

3、WebSocket Request
(1)Implementation:只支持RFC6455(v13) ,WebSocket協議標準的最新版。

(2)Protocol:有ws與wss之分, ws前綴是WebSocket連接的辨別標識,wss前綴是WebSocket安全連接的辨別標識。
(3)Streaming Connection :TCP session要不要保持,如果勾上標識連接會一直存在,如果沒有勾上,那麼得到第一次響應後該鏈接就會被關閉。
(4)connection id:會話的id標誌。
(5)Request data:填入將要發送的請求,要跟開發溝通好,這個是什麼格式的消息。

(6)Path、同請求一起發送參數、Request Data:與http採樣器類似,結合被測接口說明文檔來進行配置。

4.WebSocket Response

(1)Response Pattern – 採樣器將等待含有該標識的消息並繼續通信(或者直到timeout,該連接關閉)
(2)Close Connection Pattern – 如果服務器返回的消息含有這樣的字符,就結束會話。
(3)Message Backlog – 定義服務器返回消息保留的最大長度。

 

1、Streaming Connection勾選與否的影響

線程組設置1個併發,循環2次。
2個websocket sample請求都不勾選Streaming Connection
發現每次請求都會opening new connection。

都勾選
發現4個請求都在同一個connection中

 

因此,當勾選了streaming connection時,不僅會在結束會話後保留連接,而且勾選了的sampler會在有可用連接是直接使用,而沒有勾選的sampler即使存在可用連接也會重新打開一個新的連接。因此,如果是要在一個會話中發送多條消息,請勾選這個streaming connection。

 

 

2、connection id的設置
Connection id 代表會話的標誌,不同的connection會話有不同的id值。
線程組設置1個併發,循環2次。
在2個websocket sample請求中都勾選了streaming connection複用連接,但是connection id填的不同。
結果是websocket sample2會新建一個connection會話,而不是複用websocket sample1的connection會話。

3、response pattern和close pattern的設置
Response pattern是對響應結果的匹配和響應斷言配合使用。Close pattern是可以人工的停止會話。

 

 

 

Response pattern的設置

如上websocket sample1的response pattern填的是test:002,而正確的是test:001,故websocket sample1的運行結果就是didn’t match any pattern。若是爲空不填,代表什麼都可以匹配。

 

 

close pattern的設置

 

在websocket sample1請求中設置close connection pattern爲test:001,2個websocket sample都勾選streaming connection,按理說4個請求都應該是複用同一個連接(connection id不設置)。但是由於現在設置了close connection pattern,第一個websocket sample1第一次請求滿足了這個條件,就close了session,導致後面的websocket sample沒有連接可以複用,報如下錯誤。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章