一、運作Jmeter
(1) 去官方網站下載下傳jmeter(版本為3.3)并解壓。點選bin/jmeter.bat啟動jmeter
(2) 建立線程組。
(3) 線上程組中建立WebSocket Sample
二、WebSocket Sampler簡介
1、WebServer
(1)Server Name or IP:WebSocket發送的目标伺服器的位址或者名稱
(2)Port Number:WebSocker伺服器監聽的端口号。(一般是HTTP 80端口,可以通過WireShark資料包得到)
2、Timeout:
(1)Connection – 發送一個連接配接請求後,Jmeter等待連接配接完成的最長時間,機關是毫秒。
(2)Response - 對響應消息的最大等待時間。
3、WebSocket Request
(1)Implementation – 隻支援RFC6455(v13) ,WebSocket協定标準的最新版。
(2)Protocol – 有ws與wss之分, ws字首是WebSocket連接配接的辨識辨別,wss字首是WebSocket安全連接配接的辨識辨別。根據自己的實際情況填寫
(3)Streaming Connection – 選擇這個TCP session要不要保持,如果勾上辨別連接配接會一直存在,如果沒有勾上,那麼得到第一次響應後該連結就會被關閉。
(4)Request data:填入将要發送的請求,要跟開發溝通好,這個是什麼格式的消息。
4.WebSocket Response
(1)Response Pattern – 采樣器将等待含有該辨別的消息并繼續通信(或者直到timeout,該連接配接關閉)
(2)Close Connection Pattern – 如果伺服器傳回的消息含有這樣的字元,就結束會話。
(3)Message Backlog – 定義伺服器傳回消息保留的最大長度。
三、試驗
按照網上的例子,可以用http://www.websocket.org/echo.html這個網站做一些試驗,網站會将收到的資料(你的request資料)在伺服器響應中原樣傳回。
将網站提供的host等資訊填入即可與網站通信,下面是我的實驗,用于了解Jmeter中websocket sampler
1、streaming選項的影響
(1)不勾選streaming
test plan設定如下:
不勾選streaming connection結果如下:
可以看出發送的Ground
control to Major Tom被傳回,這個實驗是成功的,從result tree的sampler result中Execution
FLow中可以看出測試的結果與上面我們的設定之間的關系:用了5000毫秒的時間等待伺服器的連接配接,用了20000毫秒的時間等待伺服器的消息,且在接受到第一條消息後,關閉了這個websocket會話。
(2)勾上streaming connection
可以看到在結束測試的時候,勾上streaming那個小勾後,測試結束時streaming connection還是開着的。
(3)發送兩條消息
隻發送一條消息可能看不出什麼差別,将Websocket sampler複制一下,發送兩條資訊。這樣就可以看出第二條消息發送時是直接用的第一條消息打開的連接配接,伺服器的響應被歸類到一次會話的響應視窗。
(4)、參照參考文檔設定一個測試(添加一個loop controller,設定循環次數為3)
結果如下:
循環中的sampler都勾選了streaming,最後一個sampler沒有勾選此選項,結果中可以看出:在loop
controller中的sampler使用的是一個連接配接,在loop外面的這個sampler會打開一個新的連接配接,可以得出一個結論,實際上,當勾選了streaming
connection時,不僅會在結束會話後保留連接配接,而且勾選了的sampler會在有可用連接配接是直接使用,而沒有勾選的sampler即使存在可用連接配接也會重新打開一個新的連接配接。是以,如果是要在一個會話中發送多條消息,請勾選這個streaming
connection。
2、如何人為的結束一段對話
這就要用到之前提到過的response pattern和close pattern,先給出三個請求在沒有設定response pattern和close pattern的運作結果以便于比較
然後在第一個sampler中設定response pattern和close pattern如下(由于隻建立一次連接配接,是以隻會讀取第一個sampler中的pattern設定資訊)
這樣在第二個請求的響應傳回不符合father這個辨別,又符合了close
pattern時,就會斷開連接配接了,此時第三個websocket勾選了streaming使用上一個連接配接,但實際上卻連接配接不上這個遠端終端時就會報錯了。(response響應在這種情況下不能設定為空,如果先檢測到傳回的内容符合response
pattern,就不會再去判斷是否符合close pattern了)
3、Message Backlog的設定
上面的試驗使用的都是預設的3,是以如果試驗中的三個socket都是是在一個會話中通信,點選第三個是可以看到最近的三個伺服器響應的。當這個選項設定為1時,就隻能看到最近的一條響應資訊了