Jmeter之websocket插件安裝及使用

一胞锰、下載Jmeter插件

1.下載鏈接:https://jmeter-plugins.org/install/Install/
2.點(diǎn)擊下圖箭頭標(biāo)記點(diǎn)擊下載

image.png

3.將下載jar包復(fù)制到j(luò)meter的 lib/ext目錄,重啟jmeter

二崖面、添加插件

1.在工具欄>>>>Options(選項(xiàng))>>>Plugins Manager 點(diǎn)擊進(jìn)入


image.png

2.選擇Available Plugins
3.輸入websocket


image.png

4.選擇websoket相關(guān)插件唾糯,勾選并點(diǎn)擊下面的Apply and restart jmeter,這時(shí)manager會(huì)自動(dòng)幫你下載依賴包并安裝到lib目錄下

三辟躏、添加WebSocket Sampler

1.新建一個(gè)測(cè)試計(jì)劃
2.添加一個(gè)線程組
3.右鍵添Sampler時(shí)就能看到websocket的模板
4.常用的就是websocket request-response Sampler(連接+發(fā)送data或者只發(fā)data)辆憔,其次是WebSocket Open Connection(只連接渣蜗,不發(fā)送data)
5.添加一個(gè)websocket request-response Sampler


image.png
說(shuō)明:
(1)Connection:有兩項(xiàng),第一項(xiàng)是使用已有連接鹏漆,就是上一個(gè)websocket請(qǐng)求所建立的連接通道巩梢,選擇后Server URL全置灰只讀不可操作创泄。第二項(xiàng)是新建連接通道艺玲。
(2)Server URL:可以發(fā)送ws協(xié)議和wss協(xié)議(加密的websocket)括蝠,以上圖的配置所對(duì)應(yīng)的連接串如下:
wss://192.18.24.211:8888/testPath
(3)Data:支持文本(包括JSON)和Binary二進(jìn)制數(shù)據(jù)的發(fā)送。默認(rèn)請(qǐng)求響應(yīng)的超時(shí)時(shí)間為6S饭聚,超過(guò)這個(gè)時(shí)間報(bào)錯(cuò)忌警。

三、使用小技巧

1秒梳、Path和Requst data要注意編碼格式

websocket發(fā)送數(shù)據(jù)到后端法绵,與http請(qǐng)求的原理是相通的,所以發(fā)送的數(shù)據(jù)如果含有非常字符酪碘,如"/"朋譬、"+"、"%"兴垦、引號(hào)等徙赢,就會(huì)引起解析錯(cuò)誤,所以需要特別注意探越,比如:

如上所示狡赐,websocket請(qǐng)求的上一個(gè)請(qǐng)求TR-token可以獲取一個(gè)token串(通過(guò)正則表達(dá)式提取器提取)钦幔,而這個(gè)串的格式可能是這樣的:Ivj6eZRx40+MTx2Zv/G8nA枕屉,可以發(fā)現(xiàn)含有"+"、"/"字符鲤氢,而我們需要把這個(gè)串作為Path的一部分來(lái)發(fā)送搀擂,那么我們就需要對(duì)${token}變量進(jìn)行URL轉(zhuǎn)碼,用到j(luò)meter的函數(shù) __urlencode()

2卷玉、可以通過(guò)邏輯控制器來(lái)模擬群發(fā)消息

(1)通過(guò)循環(huán)控制器調(diào)取參數(shù)化文件(CSV)里的用戶信息表來(lái)實(shí)現(xiàn)群發(fā)消息哥倔,如下所示:

(2)或者先通過(guò)發(fā)送請(qǐng)求來(lái)獲取用戶信息(正則表達(dá)式提取)揍庄,再用ForEach調(diào)取用戶組變量發(fā)送消息咆蒿,如下所示:

3、以時(shí)間戳來(lái)查看當(dāng)前聊天記錄應(yīng)注意websocket的response延時(shí)

在并發(fā)的情況下蚂子,websocket請(qǐng)求延時(shí)可能要遠(yuǎn)大于http請(qǐng)求沃测,比如延時(shí)2秒以上(從發(fā)送消息到看到聊天面板已經(jīng)過(guò)了2秒以上)。所以在jmeter中用時(shí)間戳函數(shù)${__time(,)}來(lái)表示最新一條聊天記錄的時(shí)間是不可靠的食茎。我們應(yīng)該在websocket請(qǐng)求中插入正則表達(dá)式提取器蒂破,通過(guò)在response中獲取其時(shí)間才能確保消息接收時(shí)間準(zhǔn)確(即不要用客戶端時(shí)間來(lái)判斷你的聊天時(shí)間)。

(1)先提取websocket反饋的服務(wù)端時(shí)間戳

(2)再作為查詢當(dāng)前聊天記錄的時(shí)間戳依據(jù)

4别渔、最后說(shuō)一下jmeter4.0附迷,如果是要做分布式測(cè)試惧互,jmeter4.0默認(rèn)是要求RMI傳輸必須SSL加密的,否則jmeter-server就啟動(dòng)不了喇伯,我們可以用簡(jiǎn)單的配置來(lái)回避這個(gè)問(wèn)題喊儡。就是server端和client端的jmeter我們統(tǒng)一做如下配置:

(1)用編輯器打開(kāi)bin/user.properties文件
(2)找到server.rmi.ssl.disable,將#注釋符去掉稻据,改成 server.rmi.ssl.disable=true

現(xiàn)在可以奔跑了艾猜,我直接用以下shell腳本實(shí)現(xiàn)在linux下分布式調(diào)用jmeter-server進(jìn)行測(cè)試,并生成html報(bào)告:

!/bin/bash

testAPI="websocket-test.jmx" #jmeter測(cè)試腳本
Cur_Dir=(cd "(dirname "0")"; pwd) sed -i "s/csvData\\\/csvData\//g"Cur_Dir/jmeter4.0/bin/{testAPI} #替換參數(shù)路徑斜杠\為/Cur_Dir/jmeter4.0/bin/jmeter -n -t Cur_Dir/jmeter4.0/bin/{testAPI} -R 172.16.1.67,172.16.5.241 -l Cur_Dir/DashReport/log-(date -d "today" +"%Y%m%d%H%M%S").csv -e -o Cur_Dir/DashReport/htmlReport-(date -d "today" +"%m%d%H%M%S")
另外測(cè)試還開(kāi)啟了jmeter監(jiān)控工具(influxDB+grafana)捻悯,具體安裝配置方式參見(jiàn)我的另一篇文章《關(guān)于Jmeter長(zhǎng)時(shí)間壓測(cè)的可視化監(jiān)控報(bào)告》(區(qū)別是這篇文章用的是windows版的匆赃,而我這次測(cè)試用的是Linux版的,網(wǎng)上有相關(guān)下載今缚,開(kāi)源工具)算柳。

   添加配置后,監(jiān)控后的效果如下:

補(bǔ)充:除了常用的WebSocket Open Connection和WebSocket request-response 這兩個(gè)Sampler姓言,WebSocket Single Read Sampler也比較常用瞬项,一般是用在群聊消息已讀回執(zhí)的發(fā)送。比如在微信群里發(fā)一條消息事期,通過(guò)抓包分析滥壕,可以看到客戶端是發(fā)出了兩條消息(同時(shí)服務(wù)端也回發(fā)了兩條消息),如下所示:

第二條消息表示發(fā)送消息已讀回執(zhí)兽泣,按以往的方式绎橘,我們需要通過(guò)正則表達(dá)式提取器提取第一條消息的返回值,然后發(fā)送第二條消息唠倦,這樣的效率就不高称鳞,我們可以直接用WebSocket Single Read Sampler來(lái)模擬消息的已讀回執(zhí):

原文鏈接:https://blog.csdn.net/smooth00/java/article/details/81355110

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市稠鼻,隨后出現(xiàn)的幾起案子冈止,更是在濱河造成了極大的恐慌,老刑警劉巖候齿,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件熙暴,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡慌盯,警方通過(guò)查閱死者的電腦和手機(jī)周霉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)亚皂,“玉大人俱箱,你說(shuō)我怎么就攤上這事∶鸨兀” “怎么了狞谱?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵乃摹,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我跟衅,道長(zhǎng)孵睬,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任与斤,我火速辦了婚禮肪康,結(jié)果婚禮上荚恶,老公的妹妹穿的比我還像新娘撩穿。我一直安慰自己,他們只是感情好谒撼,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布食寡。 她就那樣靜靜地躺著,像睡著了一般廓潜。 火紅的嫁衣襯著肌膚如雪抵皱。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,255評(píng)論 1 308
  • 那天辩蛋,我揣著相機(jī)與錄音呻畸,去河邊找鬼。 笑死悼院,一個(gè)胖子當(dāng)著我的面吹牛伤为,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播据途,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼绞愚,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了颖医?” 一聲冷哼從身側(cè)響起位衩,我...
    開(kāi)封第一講書(shū)人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎熔萧,沒(méi)想到半個(gè)月后糖驴,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡佛致,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年贮缕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晌杰。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡跷睦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肋演,到底是詐尸還是另有隱情抑诸,我是刑警寧澤烂琴,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站蜕乡,受9級(jí)特大地震影響奸绷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜层玲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一号醉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧辛块,春花似錦畔派、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至尘盼,卻和暖如春憨愉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背卿捎。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工配紫, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人午阵。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓躺孝,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親趟庄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子括细,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359