并非原創(chuàng),摘抄自:這里
Jmeter平時做API接口的吞吐量測試,幾個配置項很好上手沒有去深入思考。
有幾個疑問:
1 Ramp-Up配置時間實際作用?
2 循環(huán)是在哪個時間點開始執(zhí)行的?與線程組的關系是怎樣的?
3 配置10/s個并發(fā)如何實現(xiàn)?
有疑問就實踐,讀別人博客難免找不到自己想要的內(nèi)容。
實踐疑問1:
Ramp-UP time的實際作用,圖一為例解釋:有5個線程需要5秒發(fā)送完成,也就是1個/s請求。(如果線程數(shù)是10,ramp-up time是5,又是什么意思?)
注:線程數(shù)抽象實例化后就是用戶數(shù),Ramp-up time是規(guī)定所有用戶在時間段內(nèi)把請求發(fā)送完(前提條件循環(huán)次數(shù)是1),而且請求的時間間隔是固定的=Ramp-Up time/線程數(shù)。
看執(zhí)行結(jié)果統(tǒng)計:從結(jié)果中可以看出,總計時耗時5s,請求數(shù)是5個,時間間隔是固定的1秒(這個總時耗和時間間隔就是Ramp-Up time實際作用)。
疑問二: 循環(huán)是在哪個時間點開始執(zhí)行的?與線程組的關系是怎樣的?
解答:循環(huán)開始時間幾乎與啟動時間并行,
如下圖解釋:a循環(huán)數(shù)為1的解釋是1個/s請求發(fā)5次請求。
b循環(huán)數(shù)為2時解釋是(1個/s請求發(fā)5次)執(zhí)行2遍(循環(huán)數(shù)),循環(huán)開始執(zhí)行時間幾乎與第一遍執(zhí)行時間并行。(仔細觀察Thread Name的時間點)
疑問三:配置10/s個并發(fā)如何實現(xiàn)?是否可以通過(線程數(shù),Ramp-Up time、循環(huán)數(shù))配合來實現(xiàn)?
方法一: 通過(線程數(shù),Ramp-Up time、循環(huán)數(shù))配合來實現(xiàn)
組合有很多種,我列了幾個

方法二:用Jmeter自帶Constant Throughput Timer插件實現(xiàn),實際測試這樣配置要達到10/s的效果不可行。(原因:評估這個配置限制TPS值的最小單位是minute,所有對數(shù)量小的請求統(tǒng)計測試不準是可以理解的。)具體是什么原因該以后工作留個疑問,多閱讀多思考。
對上minute級別的大并發(fā)測試這個配置項應該是準的。
劃重點:
總請求數(shù) = 線程數(shù) * 循環(huán)次數(shù) 每秒請求數(shù) = 總請求數(shù) / ramp-up
加一些自己的理解:
其實循環(huán)次數(shù)并不是說,執(zhí)行完第一輪之后再執(zhí)行第二輪。拿循環(huán)次數(shù)為10來說,不是1到10一遍一遍的執(zhí)行(執(zhí)行完1遍再執(zhí)行第2遍、第3遍...第10遍),理解成1到10同時進行就可以了。在啰嗦點,就是開啟了10個線程來執(zhí)行