JMeter中BeanShell和Java擴展性能之比較

本文版權歸xmeter.net 所有。歡迎轉載,轉載請注明出處讶踪。

摘要##

JMeter提供了多種方式來自定義腳本來實現JMeter不支持的功能,常見的方式有插入BeanShell腳本和通過擴展JMeter提供的Java接口泊交,本文通過實現一個簡單的功能來比較兩種不同的實現方式下對JMeter的性能影響乳讥,并對這兩種不同的實現方式的使用場景提供推薦。

測試場景##

假設測試腳本需要產生一個長度為1024的隨機字符串廓俭,字符串產生后將其賦值給一個名為“data”的變量云石,供后面的Sampler來使用,在本文中使用的是“Dummy Sampler”研乒,該Sampler能讓用戶手工輸入“Request Data”和“Response Data”汹忠,使用過程中易于調試和測試。BeanShell版的JMeter測試腳本結構如下告嘲。需要注意的是Dummy Sampler不是JMeter標準提供的Sampler错维,讀者如果有興趣,參見https://jmeter-plugins.org 安裝步驟將其安裝到你的JMeter中橄唬。

完成的測試計劃

BeanShell Preprocessor中的代碼如下赋焕,生成了隨機字符串后將值賦值給變量“data”。
BeanShell代碼

在Dummy Sampler里的“Response Data”輸入框中傳入變量“data”仰楚,如下圖所示隆判。

在Dummy Sampler中使用BeanShell中生成的變量

Java擴展JMeter的實現方式下,測試腳本的基本結構與上類似僧界,如下圖所示侨嘀,不一樣的地方是把“BeanShell Preprocessor”替換成了“User Parameters”。

使用擴展function方式生成的測試計劃

“User Parameters”下加入一個變量捂襟,該變量的值是自定義擴展的一個函數 - “${__MyRandomFunc()}”咬腕。

調用自定義的function

該自定義函數MyRandomFunc的實現方式如下所示,具體請參見這篇文章來學習如何擴展自定義函數葬荷。

自定義function代碼的實現

測試配置##

測試運行之前涨共,將兩個測試用例的ThreadGroup的數目設置成100,每個Thread運行100次宠漩。
測試機器是在青云上申請的標準虛機:
1)2核CPU*2GB內存
2)20GB硬盤
3)操作系統(tǒng)CentOS 7举反,64位
4)Java版本是Open JDK 8
5)JMeter版本是3.0

JMeter測試采用非UI方式運行。

測試結果##

BeanShell執(zhí)行完測試約用了1分18秒左右扒吁,控制臺打印出的測試結果如下火鼻。JMeter進程CPU使用率為137%,內存使用率為14%.

summary + 2802 in 00:00:23 = 120.6/s Avg: 276 Min: 50 Max: 516 Err: 0 (0.00%) Active: 100 Started: 100 Finished: 0
summary + 4138 in 00:00:30 = 138.1/s Avg: 275 Min: 50 Max: 506 Err: 0 (0.00%) Active: 100 Started: 100 Finished: 0
summary = 6940 in 00:00:53 = 130.5/s Avg: 275 Min: 50 Max: 516 Err: 0 (0.00%)
summary + 3060 in 00:00:24 = 125.9/s Avg: 276 Min: 50 Max: 502 Err: 0 (0.00%) Active: 0 Started: 100 Finished: 100
summary = 10000 in 00:01:18 = 129.0/s Avg: 276 Min: 50 Max: 516 Err: 0 (0.00%)

Java擴展JMeter的實現方式執(zhí)行完測試約用了32秒,控制臺打印出的測試結果如下魁索。JMeter進程CPU使用率為50%融撞,內存使用率為5%.

summary + 6544 in 00:00:19 = 348.5/s Avg: 273 Min: 50 Max: 501 Err: 0 (0.00%) Active: 100 Started: 100 Finished: 0
summary + 3456 in 00:00:14 = 252.6/s Avg: 277 Min: 50 Max: 501 Err: 0 (0.00%) Active: 0 Started: 100 Finished: 100
summary = 10000 in 00:00:32 = 308.1/s Avg: 274 Min: 50 Max: 501 Err: 0 (0.00%)

由測試結果可以看到Java擴展JMeter方式下執(zhí)行時間,CPU蛾默、內存占用率比BeanShell方式下占明顯的優(yōu)勢懦铺。讀者需要注意的是Avg,Min和Max指的是“Dummy Sampler”的統(tǒng)計數據支鸡,兩種使用方式下Dummy Sampler的執(zhí)行時間都是一樣的冬念,而吞吐量后者比前者多了將近1倍,原因就在于測試步驟中的第一步的不同實現方式下牧挣,后者比前者快了很多急前。

使用建議##

BeanShell是JMeter內置的功能,但是由于它是腳本語言瀑构,動態(tài)加載執(zhí)行的裆针,因此效率不是很高,不太適合于在經常執(zhí)行的場景下寺晌,比如將BeanShell放在循環(huán)內部世吨,不斷地被執(zhí)行。比較適合的應用場景是放在執(zhí)行一次呻征、或者少數幾次的地方耘婚,比如在循環(huán)外部讀取配置文件內容等。

而Java擴展JMeter的實現方式的效率比較高陆赋,適合于放在經常執(zhí)行的測試步驟中沐祷,但是由于它不是JMeter內置的功能,擴展起來需要有些工作量攒岛,而且部署的時候也比較麻煩(分布式運行的時候需要將自定義的JAR拷貝至所有的機器上)赖临。讀者根據自己的使用場景來選擇適合自己的自定義腳本的方式。

關于我們##

XMeter成立于2016年灾锯,核心團隊都來自于IBM兢榨,是一家領先技術的性能測試持續(xù)集成咨詢與服務提供商。我們致力于提供給客戶可靠,簡單,低成本的性能測試解決方案顺饮。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末色乾,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子领突,更是在濱河造成了極大的恐慌,老刑警劉巖案怯,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件君旦,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機金砍,發(fā)現死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門局蚀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人恕稠,你說我怎么就攤上這事琅绅。” “怎么了鹅巍?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵千扶,是天一觀的道長。 經常有香客問我骆捧,道長澎羞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任敛苇,我火速辦了婚禮妆绞,結果婚禮上,老公的妹妹穿的比我還像新娘枫攀。我一直安慰自己括饶,他們只是感情好,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布来涨。 她就那樣靜靜地躺著图焰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪扫夜。 梳的紋絲不亂的頭發(fā)上楞泼,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機與錄音笤闯,去河邊找鬼堕阔。 笑死,一個胖子當著我的面吹牛颗味,可吹牛的內容都是我干的超陆。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼浦马,長吁一口氣:“原來是場噩夢啊……” “哼时呀!你這毒婦竟也來了?” 一聲冷哼從身側響起晶默,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤谨娜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后磺陡,有當地人在樹林里發(fā)現了一具尸體趴梢,經...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡漠畜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了坞靶。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片憔狞。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖彰阴,靈堂內的尸體忽然破棺而出瘾敢,到底是詐尸還是另有隱情,我是刑警寧澤尿这,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布簇抵,位于F島的核電站,受9級特大地震影響妻味,放射性物質發(fā)生泄漏正压。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一责球、第九天 我趴在偏房一處隱蔽的房頂上張望焦履。 院中可真熱鬧,春花似錦雏逾、人聲如沸嘉裤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽屑宠。三九已至,卻和暖如春仇让,著一層夾襖步出監(jiān)牢的瞬間典奉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工丧叽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留卫玖,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓踊淳,卻偏偏與公主長得像假瞬,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子迂尝,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內容

  • 本文版權歸xmeter.net所有脱茉。歡迎轉載,轉載請注明出處垄开。原文請參見這里琴许。 摘要 在利用JMeter實施性能測...
    XMeter性能測試云服務閱讀 6,629評論 0 3
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現溉躲,斷路器虚吟,智...
    卡卡羅2017閱讀 134,629評論 18 139
  • 一寸认、基本概念 1.測試計劃是使用 JMeter 進行測試的起點,它是其它 JMeter 測試元件的容器串慰。 2.線程...
    Leo_0626閱讀 2,269評論 0 10
  • 在使用Jmeter進行接口的性能測試時,由于Jmeter 是JAVA應用唱蒸,對于CPU和內存的消耗比較大邦鲫,所以,當需...
    燕京博士閱讀 4,162評論 0 16
  • 【手寫愛情繪本6.0】一個人總是仰望和羨慕著別人的幸福神汹,一回頭庆捺,卻發(fā)現自己正被仰望和羨慕著,其實每個人都是幸福的屁魏。...
    主播亞東閱讀 220評論 0 0