JMeter之If Controller深究一

1.背景

   大家最近還好麼,截止目前新型冠狀病毒累計確診病例已超7萬4千多例,希望大家無論是在家辦公還是單位辦公,一定要注意自我防護。今天跟大家分享一下,最近一次真實生產壓測遇到的問題,如題:if controller,本次它是主角。


2.目的

    下面進入正題:本次主題是與If邏輯控制器有關,相信有些同學對這個邏輯控制器使用非常熟練。那麼這個邏輯控制器到底有什麼問題呢?本期寶路就來分享下一次真實生產壓測遇到的坑。

僞腳本結構圖:

image

從腳本結構圖看出:邏輯性很強,前交易成功纔會執行後交易,判斷是通過邏輯控制器來實現的。感覺腳本很完美。。。然而在壓測過程中卻出現了不合乎常理的現象。生產壓測結果:

TPS趨勢圖:

image

RT趨勢圖:

image

恩?RT、TPS趨勢圖對應關係不對啊。。。。壓測過程中TPS呈現逐漸下降趨勢,RT趨於平穩,繼續增加併發用戶數,RT變化不明顯,TPS仍呈現逐漸下降趨勢。(正常現象:隨着併發用戶數增加TPS增長,響應時間不變或略有增長;或TPS增長不明顯,響應時間增長明顯)

開發人員從服務器的日誌分析得出:各交易耗時很短,服務器壓力並不大。這就有點尷尬了,於是乎就開始了各種排查, 最後由於時間緊迫,最後被迫使用LR11現場編寫腳本進行壓測。恩?LR11壓測卻沒這個現象,然而LR11並不支持JDK1.7,這也就導致部分重點交易未壓測。

回去之後,寶路這邊就開始分析到底是什麼原因導致這個奇怪的現象。先想着看看能不能復現,如果能復現問題就好解決了

思路:保持腳本整體結構不變,採用JMeter官方自帶的Java Sampler代替原腳本中的sampler,當然如果能自己手寫Java Sampler也可以不採用官方自帶的(JMeter均採用相同的3.1版本)。大家要自己寫Java Sampler的話,可以參考寶路的寫的:

image

爲了簡單快速驗證,我先替換一個請求進行驗證(其餘請求暫時屏蔽),測試結果:

TPS趨勢圖:

image

RT趨勢圖:

image

哈哈,復現了。。。。緊接着,我把if邏輯控制器禁用掉並將下面的Sampelr複製到f邏輯控制的上層,大家自行腦補,就不佔圖了,測試結果如下:

TPS趨勢圖:

image

RT趨勢圖:

image

從複測結果可以出:TPS、RT曲線 非常穩定。對比兩次結果可以看出,問題出在了if邏輯控制器。一開始我懷疑是不是我腳本中的if邏輯控制器使用方法有問題,檢查了下,也網上搜了搜相關資料,沒啥毛病啊。。。。。

此時給我的感覺就是JMeter3.1版本的if邏輯控制器有嚴重的性能問題。下篇文章給大傢俱體分析if邏輯的源碼及性能實驗驗證。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章