日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用Jmeter的Websocket:获取性能数字

發布時間:2023/12/3 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Jmeter的Websocket:获取性能数字 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題:

我最近遇到了一個問題,該問題需要針對多個用戶測試SockJs / Stomp Spring Websocket代理的性能。 由于WebSocket本質上是異步的,因此它比常規的http / https請求-響應測試更加棘手。

解:

好了,無需解釋為什么Jmeter是執行這種測試的很好的工具,但是需要一個插件使用stomp協議與Jmeter建立與服務器的websocket連接。

在這里,我發現此插件非常有用,因為它確實處理了與服務器層建立Stomp協議連接的樣板代碼。

但是這個插件有一個局限性,一旦它創建了連接并訂閱了一個websocket主題,它便進入睡眠狀態,一旦它出來,它將在睡眠時間內打印所有接收到的消息并結束其執行。

這通常不適用于交互式應用程序,在這些應用程序中,我們的Websocket會根據其他用戶的各種活動/當前用戶執行的活動不斷接收通知,而不會停止其他屏幕功能。

因此,我們需要對上述插件進行更改,以便websocket繼續監聽消息,而我們的應用程序繼續執行其他各種活動。

實現方法非常簡單:

a)更改SockJsSampler.java文件,以最后刪除websocket的休眠和關閉。 它基本上是181和182行。

b)編寫一個擴展AbstractJavaSamplerClient.java的新Java類。 該類負責偵聽進入您的網絡套接字的消息。

c)現在我們有2個Sampleres(一個用于websocket,一個用于從websocket監聽,它們可以通過隊列連接。在我的情況下,我使用ArrayBlockingQueue) 。

d)修改SockJsSampler以將消息放入此ArrayBlockingQueue中 。 這可以在handleframe方法中的插件的SockJsWebsocketSubscriptionHandler類中完成。

因此,想法是在線程組執行開始時創建一次Websocket連接,并繼續用傳入消息填充隊列,并且在測試計劃的各個點上,使用在(b)點中創建的新示例作為Jmeter Java Request Sampler來讀取消息從隊列中驗證數據。

關于在websocket上接收消息所花費的時間,我們可以開始捕獲自定義采樣器啟動時的時間,并減去接收到其預期消息時的時間。 使用SampleResult API的result.sampleStart()和result.sampleEnd()可以更輕松地完成此操作,當您從AbstractJavaSamplerClient擴展此類時,該方法將在runTest方法中繼承。

注意 :如果要運行多于1個線程的線程組來模擬多個用戶,則可能必須為每個線程設置1個ArrayBlockingQueue ,以便不同線程的偵聽器無法讀取消息。 這很重要,因為我們需要記住,我們只有1個websocket連接,所有線程都共享。 如果您打算讓所有線程都擁有自己的websocket連接,那么您不必擔心這一點。

翻譯自: https://www.javacodegeeks.com/2019/08/websockets-jmeter-getting-performance-numbers.html

總結

以上是生活随笔為你收集整理的使用Jmeter的Websocket:获取性能数字的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。