溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

jmeter集群下腳本日志和報告處理

發(fā)布時間:2020-06-05 04:42:43 來源:網(wǎng)絡(luò) 閱讀:575 作者:嘉為科技 欄目:軟件技術(shù)

jmeter支持分布式測試,在分布式模式下,由一臺調(diào)度機調(diào)度所有的執(zhí)行機(集群節(jié)點),執(zhí)行腳本時可以自由的選擇單節(jié)點執(zhí)行或者分發(fā)集群中指定或全部的機器執(zhí)行。在使用調(diào)度機客戶端分發(fā)腳本時,無論是在GUI模式還是non-GUI模式,腳本日志的收集及報告的生成都無任何問題,但是如果是使用jmeter SDK在代碼中調(diào)用客戶端大并發(fā)分發(fā)腳本到執(zhí)行機執(zhí)行,則會存在日志無法實時獲取的問題(超大jmx腳本執(zhí)行時產(chǎn)生的超大日志通過網(wǎng)絡(luò)傳輸需要時間)。


jmeter集群下腳本日志和報告處理


通過分析jmeter SDK的源代碼,發(fā)現(xiàn)日志的收集是異步執(zhí)行的,而在SDK中并未提供日志收集完成的通知能力,導致根據(jù)日志生成報告時經(jīng)常出錯(實際的腳本都是正常執(zhí)行完的)。分析上述問題,提供的解決方案如下:

  • 腳本執(zhí)行完后,當前線程睡眠一定時間

  • 暴力反射嘗試獲得日志的傳輸狀態(tài)

  • 修改jmeter SDK的源代碼,在其中增加監(jiān)聽機制

  • 當前線程只負責執(zhí)行腳本到結(jié)束狀態(tài),定時收集日志并生成報告


針對以上的4種方案,分析其優(yōu)缺點:

  • 日志大小無法確定,睡眠時間無法確定,而且睡眠會導致線程等待,可能會產(chǎn)生ThreadInterruptException

  • jmeter SDK注釋寫的很差(基本無注釋),分析源代碼需要強大的技術(shù)能力和一定的時間,目前的時間排期不允許

  • 同樣由于注釋的原因,也需要強大的技術(shù)能力和一定的時間,不過難度比第二種方式要低,也是可以產(chǎn)生最優(yōu)結(jié)果的解決方案

  • 技術(shù)要求最低,實現(xiàn)容易,但是日志和報告的生成會延遲(基于定時器的周期)

在當前產(chǎn)品的需求上,其實日志和報告并不是極其敏感和實時性要求高的數(shù)據(jù),所以最終選擇第4種方案,代碼如下:


jmeter集群下腳本日志和報告處理


每個十分鐘拉取距今14400秒(任務(wù)執(zhí)行超時時間,可配置啟動參數(shù))還未獲取日志的任務(wù)并嘗試獲取日志。


jmeter集群下腳本日志和報告處理


因為是異步的拉取日志,所以在拉取日志之前加載一次jmeter的配置。


jmeter集群下腳本日志和報告處理


考慮到每一次停機維護的時間可能會很長(超過當前設(shè)置的任務(wù)超時時間),因此還需要提供一個啟動應(yīng)用時掃描任務(wù)的能力。


jmeter集群下腳本日志和報告處理


CommandLineRunner接口標識應(yīng)用啟動完成時執(zhí)行該接口的實現(xiàn)類,因此需要使用@Component將類的對象加入到IOC容器中。

日志拉取完成后,再處理報告,同樣的原理每個十分鐘拉取距今14400秒(任務(wù)執(zhí)行超時時間,可配置啟動參數(shù))還未獲取日志的任務(wù)并嘗試根據(jù)日志生成報告。


jmeter集群下腳本日志和報告處理


同樣因為是異步生成報告,因此需要在生成報告時,加載一次jmeter的配置管理。此處也要考慮停機維護的問題,使用CommandLineRunner。


jmeter集群下腳本日志和報告處理


到此,jmeter日志和執(zhí)行生成的問題完美解決,每一次執(zhí)行完的任務(wù)可能會有10左右的延遲時間用來獲取日志和報告。


jmeter集群下腳本日志和報告處理

▲上圖顯示任務(wù)執(zhí)行時和執(zhí)行成功后,日志和報告正在生成中


作者:陳潔


其他技術(shù)文章

企業(yè)應(yīng)用運維自動化應(yīng)該如何設(shè)計?

域內(nèi)計算機本地管理員密碼管理

騰訊PaaS平臺 | 主機名設(shè)置錯誤怎么辦?

Redis持久化介紹

4大步驟節(jié)省30%浪費,優(yōu)化企業(yè)上云成本從了解云開始!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI