先看
【Jmeter】基礎介紹-詳細
【Jmeter】Request1輸出作為Request2輸入-后置處理器
繼續聊提出的第二個問題,即
2.需要按比例分配API請求并發,以模擬真實的API壓力場景
做壓測的時候,一般的需求都是多個API同時壓,不然也看不出真正的tps是多少啊,
比如雖然介面a的需求并發不高,500個用戶才請求一次,但是特別耗性能,導致其他介面tps下降嚴重,所以壓測的時候可以將比例調的很小,但是不能忽略它,只測并發請求高的介面
說會主題,如何按比例分配壓測并發量呢?使用Jmeter可以有兩種實作方式
先說第一種,通過執行緒組的方式控制:
執行緒組1配置:
執行緒組2配置:
區別就是執行緒數不一樣,當然用回圈次數也可以控制,區別可以看【Jmeter】基礎介紹-詳細,
Request請求:
結果:
這里哪個請求在前完全隨機,兩個執行緒中互不干擾,
這種方式的好處就是完全并行,互不干擾,缺點就是基本沒有使用場景,一般情況下,API都是有權限認證介面的,后面的介面需要依賴前面介面的輸出(實作方式可以看【Jmeter】Request1輸出作為Request2輸入-后置處理器),這種完全隔離的方式顯然無法滿足需求,或者你需要自己寫代碼提前獲取登錄資訊,不使用壓測程序中登錄回傳的認證資訊,
我們繼續介紹第二種方式,其實就是按【Jmeter】Request1輸出作為Request2輸入-后置處理器中創建的執行緒組一樣,只使用一個執行緒組,然后通過回圈控制器來控制某個Api所占比例:
新建回圈控制器:
調整引數達到按比例分配Api壓力的目的:
執行效果:
如上圖所示,執行了一個Request1和兩個Request2,而且是按順序執行的,即這種方式可以滿足【Jmeter】Request1輸出作為Request2輸入-后置處理器需求的同時使用,不過有兩點需要注意:
- 這種方式按順序執行時,變數(例如身份資訊token)是會被覆寫的,即無法完全模擬多用戶登錄及身份資訊的場景,
- 這種配置方式會導致api并發分配不均,即在時間段1全部請求都是Request1,時間段2全部請求都是Request2,雖然總量是按比例的,但是并不符合我們的需求,
以上兩個問題,在我的測驗場景中1沒有影響,即用戶1、2、3、4、5那個來請求Api對壓測來說是不關心的,性能完全一樣,這里的登錄只是為了壓測登錄介面,同時生成一個token給下面的介面使用,問題2影響比較大,可以通過【Jmeter】基礎介紹-詳細中提到的Ramp-up時間引數來控制,首先按比例配置好回圈控制器后,將執行緒數和回圈次數配置為1,Ramp-up配置為0,即立刻啟動,然后使用壓測機跑一下用于估算一次壓測流程的時間,得到這個時間后,就是我們在實際壓測中需要填寫到Ramp-up中的引數,比如一次完整的壓測流程需要2s,我現在需要壓測執行1000個執行緒,回圈100次,即一共10w次請求,將Ramp-up時間設定為2s,即1000個執行緒將在2s內逐步啟動,達到所有執行緒的啟動時間覆寫第一個執行緒一次回圈的整個時間段,來達到真實模擬多種請求并發執行的程序,解決以上提到的第二個問題,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/551151.html
標籤:Java
下一篇:返回列表