JMeter Websocket 二進制Binary壓力測試或接口測試


背景

最近在做游戲項目,做好java服務端,需要本地調試Websock服務,並且是二進制binary形式傳輸,網上的很多都是text形式傳輸的測試頁面,所以不符合要求。為了解決websocket的二進制傳輸,並實現websocket通信機制的心跳問題,所以寫了一個做法。

目的

  1. Jmeter與java后端websocket服務建立連接
  2. 因為websocket機制,有定時檢測連接是否存儲,所以需要Jmeter定時維護連接存在,不然超過心跳時間會斷開連接。
  3. 建立連接后,二進制傳輸

點贊再看,關注公眾號:【地藏思維】給大家分享互聯網場景設計與架構設計方案
掘金:地藏Kelvin https://juejin.im/user/5d67da8d6fb9a06aff5e85f7

操作

1. 下載Jmeter

https://jmeter.apache.org/download_jmeter.cgi
上官網,找最新的版本,找到zip格式的壓縮文件,便於在windows下解壓。
解壓后,找到bin目錄下的jmeter.bat文件,則會啟動Jmeter

2. 更改語言

點擊菜單欄-option-language-Chinese,則能顯示中文
1.png

3. 下載Jmeter的Websocket插件

https://bitbucket.org/pjtr/jmeter-websocket-samplers/src
下載后,放到jmeter目錄的lib\ext下,並重啟jmeter

如:
D:\Program Files\apache-jmeter-5.2.1\lib\ext\

4. 建立線程組

1.png
我這里是自測,所以用了一次循環
2.png

5. 建立 websocket寫入 樣例

對着 線程組右鍵-》添加-》取樣器-》 websocket simple write sample

5.1 創建連接

填寫ip 、端口、連接的path。

說明一下而這個只是對服務端創建連接,並不是真正的通信傳輸數據用。websocket都是創建連接后,后續才真正的傳輸通信,如:聊天室建立房間后續再通信。

3.png

5.2 創建 察看結果樹

用於看每次通信是否有成功連接。
對着樣例右鍵-》添加-》監聽器-》察看結果樹

6. 創建真正通信用的websocket寫樣例

同樣在一個線程組下,創建websocket寫樣例。但是這個時候不需要填寫ip和端口,只需要選擇已存在的一個連接就行。
4.png

6.1 填寫與傳輸二進制

這個地方就比較麻煩,不能直接填json什么的,只能把對象寫好,然后轉換為byte數組,再轉為16進制的數字放進jmeter。
5.png

我這兩個類呢,是個protobuf軟件proto.exe生成出來的類來的,里面有轉換為toByteArray方法,得到二進制數組后,再寫個工具把剛剛的數組轉換為16進制,就得出結果。
6.png

執行后,打印出來后,得到這個數字就可以放進jmeter的參數欄。參數類型,記得選binary


到這里基本上就完成了。為了壓測時,我們需要對websocket后端進行心跳維護。

7. 最后弄弄定時心跳

對着線程組右鍵-》添加-》邏輯控制器-》runningtime控制器
7.png

填好這個定時任務存活時間

7.1 創建心跳傳輸內容

如同第6點 那樣,創建websocket寫樣例,傳輸二進制數據。

7.2 創建固定定時器

填寫這個定時器,每多少秒執行一次。
8.png

本文到這里就結束了。本次講解的是websocket的開發自測,可能對於大部分java開發來講都用不上,只有游戲的同學會使用websocket,搞游戲、聊天室、websocket等項目的同學打個call吧。


歡迎關注公眾號,文章更快一步

我的公眾號 :地藏思維

image

掘金:地藏Kelvin

簡書:地藏Kelvin

我的Gitee: 地藏Kelvin https://gitee.com/kelvin-cai


免責聲明!

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



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