JMeter測試WebSocket協(xié)議應(yīng)用的性能

本文版權(quán)歸xmeter.net 所有仑鸥。歡迎轉(zhuǎn)載档押,轉(zhuǎn)載請注明出處酥宴。

摘要##

本文描述了如何使用JMeter對WebSocket應(yīng)用進(jìn)行性能測試。先對WebSocket作了概要介紹绿店,然后以一個簡單的echo的web為例,如何使用第三方提供的插件對其進(jìn)行性能測試庐橙。

WebSocket概述##

WebSocket是在單個的TCP連接上提供了全雙工通信通道的協(xié)議假勿,該協(xié)議于2011年作為RFC6455被正式標(biāo)準(zhǔn)化。WebSocket在Web服務(wù)器和瀏覽器端都需要做實(shí)現(xiàn)态鳖。如果沒有WebSocket转培,為了實(shí)現(xiàn)即時通訊,可以采用的技術(shù)都是輪詢(polling)浆竭。輪詢是在特定的時間間隔(如每1秒)浸须,由瀏覽器對服務(wù)器發(fā)出HTTP請求,然后由服務(wù)器返回最新的數(shù)據(jù)給客戶端的瀏覽器邦泄。這種傳統(tǒng)的HTTP請求的模式帶來很明顯的缺點(diǎn) – 瀏覽器需要不斷的向服務(wù)器發(fā)出請求删窒,然而HTTP請求中頭部會占用一定的開銷,這種方式效率和實(shí)效性都不太好顺囊。而利用WebSocket肌索,瀏覽器和服務(wù)器在基于HTTP協(xié)議完成握手后,在瀏覽器和服務(wù)器之間就形成了一條通信通道特碳,他們之間就直接可以互相傳送數(shù)據(jù)诚亚。在WebSocket 協(xié)議中,為我們實(shí)現(xiàn)即時服務(wù)帶來了兩大好處:
1) 頭信息少午乓,減少了系統(tǒng)的消耗站宗。
2)服務(wù)器端推送,服務(wù)器不再被動的接收到瀏覽器的請求后才返回?cái)?shù)據(jù)益愈,而是在有新數(shù)據(jù)時就主動推送給瀏覽器份乒。
通過這種方式,效率和實(shí)效性都得到了明顯的提高腕唧,現(xiàn)在大部分瀏覽器都已經(jīng)實(shí)現(xiàn)了對WebSocket協(xié)議的支持或辖,當(dāng)然使用WebSocket付出的代價是瀏覽器和服務(wù)器端要保留一個“有狀態(tài)”的連接。

基于輪詢機(jī)制和WebSocket的架構(gòu)在實(shí)際項(xiàng)目中哪一種效率高枣接,很難一概而論颂暇,因?yàn)檫@個跟實(shí)際的業(yè)務(wù)場景有關(guān),最好的方法就是通過模擬實(shí)際的用戶行為但惶,對被測系統(tǒng)進(jìn)行打壓測試耳鸯,然后觀察被測系統(tǒng)的表現(xiàn)湿蛔。采用輪詢機(jī)制的系統(tǒng),因?yàn)榛贖TTP/HTTPS協(xié)議县爬,現(xiàn)在有很多性能測試工具可以實(shí)現(xiàn)對這種系統(tǒng)進(jìn)行測試阳啥。而基于WebSocket的性能測試則需要費(fèi)一番功夫,不過幸運(yùn)的是在開源軟件生態(tài)日益完善的今天财喳,這也不是什么難題 :)

JMeter擴(kuò)展實(shí)現(xiàn)WebSocket性能測試##

JMeter是目前最為流行的開源性能測試工具察迟,JMeter本身提供的基于插件的機(jī)制允許第三方實(shí)現(xiàn)標(biāo)準(zhǔn)JMeter所不支持的協(xié)議,而WebSocket的一個比較好的實(shí)現(xiàn)是WebSocketSampler耳高。利用該插件扎瓶,基本上能完成基于WebSocket協(xié)議的性能測試。

安裝過程###

  1. 下載JAR包泌枪。該github項(xiàng)目下提供了打包好的JAR包的下載概荷,但是還是需要用戶自己再去找依賴的JAR包,使用起來還是不太方便碌燕。如果想更簡單的話误证,可以到github下載所有打包好的JAR包。
  2. 把下載下來的JAR包拷貝到$JMETER_HOME/lib/ext目錄下修壕。如果從maciejzaleski項(xiàng)目下載到JAR包雷厂,還需要手工將頁面 里列出的JAR也拷貝到$JMETER_HOME/lib/ext目錄。
  3. 如果之前開著JMeter叠殷,需要關(guān)閉再次重啟改鲫。如果安裝成功,就應(yīng)該在Sampler那里看到新的“WebSocket Sampler”

如果重啟之后沒有發(fā)現(xiàn)“WebSocket Sampler”林束,請確認(rèn)在$JMETER_HOME/lib/ext是否拷貝了正確的JAR包像棘;如果JAR拷貝正確,如果使用從maciejzaleski下載的JAR包壶冒,請確認(rèn)相關(guān)依賴的JAR包和版本的正確性缕题;如果還是有問題,請打開$JMETER_HOME/bin/jmeter.log胖腾,檢查一下里面的日志是否報(bào)錯烟零,根據(jù)報(bào)錯信息來采取相應(yīng)的操作。

準(zhǔn)備被測應(yīng)用###

為了描述測試過程咸作,這里準(zhǔn)備了一個簡單的Java WebSocket的工程锨阿,該工程下提供了一個叫做echo的WebSocket服務(wù),實(shí)現(xiàn)的邏輯非常簡單记罚,當(dāng)瀏覽器端發(fā)送一條文本消息的時候墅诡,該echo服務(wù)返回: "server echo, " + 瀏覽器發(fā)送的文本。比如瀏覽器發(fā)送”hello"桐智,則服務(wù)器返回 "server echo, hello"末早。

安裝應(yīng)用分成兩步:
1)下載Apache Tomcat 8烟馅,并解壓,啟動Tomcat服務(wù)器然磷;
2)將示例工程的war包拷貝到$TOMCAT_HOME/webapps目錄下

在瀏覽器中打開鏈接郑趁,如下所示,在文本框中輸入”hello”姿搜,點(diǎn)擊“GO”寡润,服務(wù)器端返回”server echo, hello”的話就表示工作正常了。

應(yīng)用例子截圖

編寫測試腳本痪欲,開始測試##

如下圖所示,填入相應(yīng)的信息就可以開始進(jìn)行測試攻礼。需要的主要信息有:

1)Server Name or IP:部署WebSocket應(yīng)用所在的服務(wù)器地址
2)Port Number:端口號
3)Timeout:Connection业踢,連接超時,超過此時間未建立連接則測試報(bào)錯礁扮;Response知举,發(fā)送消息后的超時時間。
4)Implementation:現(xiàn)在只支持RFC6455
5)Protocol:ws或者wss太伊。wss指的是加密的web socket雇锡,根據(jù)被測的配置而定
6)Path:所部署WebSocket服務(wù)的路徑
7)Streaming connection:測試期間是否重用連接,如果處于非選中狀態(tài)僚焦,每次得到服務(wù)器端的返回后就會關(guān)閉連接锰提,下次執(zhí)行時會新建連接
8)Request Data:發(fā)送出去的數(shù)據(jù)
9)Response pattern:等待服務(wù)器返回的特定的字符集合;否則等待Response Timeout設(shè)定的超時時間
10)Close Connection Pattern:與8類似芳悲,但是符合條件的時候連接將被關(guān)閉
11)Message Backlog:定義最多留下的返回消息的數(shù)目

WebSocket Sampler JMeter插件使用截圖

在腳本中加入一個“View Results Tree“可以查看連接和發(fā)出數(shù)據(jù)的信息立肘。如下圖所示:

測試結(jié)果樹

大規(guī)模WebSocket協(xié)議測試 - XMeter幫您提高效率,降低成本##

單臺機(jī)器能夠模擬的WebSocket客戶端是有限的名扛,如果針對大規(guī)模的WebSocket協(xié)議測試谅年,可能需要準(zhǔn)備大量的測試機(jī)器對被測系統(tǒng)進(jìn)行打壓,這個過程需要大量的準(zhǔn)備機(jī)器環(huán)境肮韧,以及管理這些環(huán)境的工作融蹂,導(dǎo)致工作效率比較低、而且容易出錯弄企。XMeter將這些過程遷移至云端超燃,彈性伸縮管理這些壓力機(jī),用戶只要關(guān)注測試腳本的實(shí)現(xiàn)過程拘领,而無需關(guān)心這些測試環(huán)境的管理淋纲,從而大大降低了大規(guī)模性能測試的復(fù)雜度。另外XMeter提供了豐富的測試報(bào)告院究,讓性能問題一目了然洽瞬。

關(guān)于我們##

XMeter成立于2016年本涕,核心團(tuán)隊(duì)都來自于IBM,是一家領(lǐng)先技術(shù)的性能測試持續(xù)集成咨詢與服務(wù)提供商伙窃。我們致力于提供給客戶可靠,簡單,低成本的性能測試解決方案菩颖。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市为障,隨后出現(xiàn)的幾起案子晦闰,更是在濱河造成了極大的恐慌,老刑警劉巖鳍怨,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呻右,死亡現(xiàn)場離奇詭異,居然都是意外死亡鞋喇,警方通過查閱死者的電腦和手機(jī)声滥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來侦香,“玉大人落塑,你說我怎么就攤上這事」藓” “怎么了憾赁?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長散吵。 經(jīng)常有香客問我龙考,道長,這世上最難降的妖魔是什么矾睦? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任洲愤,我火速辦了婚禮,結(jié)果婚禮上顷锰,老公的妹妹穿的比我還像新娘柬赐。我一直安慰自己,他們只是感情好官紫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布肛宋。 她就那樣靜靜地躺著,像睡著了一般束世。 火紅的嫁衣襯著肌膚如雪酝陈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天毁涉,我揣著相機(jī)與錄音沉帮,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛穆壕,可吹牛的內(nèi)容都是我干的待牵。 我是一名探鬼主播,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了似嗤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤贰拿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后熄云,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體膨更,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年缴允,在試婚紗的時候發(fā)現(xiàn)自己被綠了荚守。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡癌椿,死狀恐怖健蕊,靈堂內(nèi)的尸體忽然破棺而出菱阵,到底是詐尸還是另有隱情踢俄,我是刑警寧澤,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布晴及,位于F島的核電站都办,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏虑稼。R本人自食惡果不足惜琳钉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蛛倦。 院中可真熱鬧歌懒,春花似錦、人聲如沸溯壶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽且改。三九已至验烧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間又跛,已是汗流浹背碍拆。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人感混。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓端幼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親浩习。 傳聞我的和親對象是個殘疾皇子静暂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評論 2 356

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)谱秽,斷路器洽蛀,智...
    卡卡羅2017閱讀 134,672評論 18 139
  • 本文版權(quán)歸xmeter.net 所有。歡迎轉(zhuǎn)載疟赊,轉(zhuǎn)載請注明出處郊供。 摘要 本文描述了如何利用JMeter來測試TCP...
    XMeter性能測試云服務(wù)閱讀 34,302評論 2 17
  • 互聯(lián)網(wǎng)壓力性能Badboy.Jmeterhttp://itopic.org/jmeter-http-tcp.htm...
    燕京博士閱讀 2,900評論 0 20
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,827評論 6 342
  • 不知那顆渾濁的眼睛,還會不會把我記恨近哟。 壹/ 窗子對面是一片連綿的山脈驮审,那些光禿禿的裸巖在我出生之前被空投上了樹種...
    徐瑞澤閱讀 550評論 0 0