- 相對並發與絕對並發的概念
相對並發:指在一個時間段內發生的事情
絕對並發:指在同一時刻發生的事情
- 相對並發
在jmeter的測試計划中添加線程組,設置線程屬性,2秒之內啟動10個線程,其對應的相對並發為5(線程數/啟動時間),在沒有添加其他邏輯控制器或定時器的情況下,線程屬性中設置循環次數為3次,則sampler總共執行30次(線程數*循環次數)

使用表格察看運行結果:每個線程都會運行3次
- 絕對並發
jmeter又如何實現絕對並發的呢?一般采用同步定時器(Synchronizing Timer)實現絕對並發,也就是同一個時刻達到了某一集合點才發出請求。
舉個例子:將一筐的雞蛋共188個,全部分發在容量為10的蛋托上,當蛋托上湊上10個便可以打包售賣。這里的188個雞蛋就相對於jmeter中的線程數(用戶數),容量10就是集合點數,即絕對並發數,剩下的8個雞蛋無法構成集合點數,可設置超時時間不再等待聚積成10個。
注意:使用同步定時器做性能測試時,聚合報告中的響應時間一般會大於接口真實的響應時間,可以通過其他的監控工具查看接口真實的響應時間
將Synchronizing Timer放在對應的sampler下,
Number of Simultaneous Users to Group by:集合點數,集合到對應的用戶量才發送請求,要求設置的值不能大於線程數
Timeout in milliseconds:等待超時時間,在指定的毫秒時間內沒達到集合點數將停止等待(並非終止運行),
默認值為0表示無超時時間,一般超時時間> 請求集合數量 * 1000 / (線程數 / 啟動時間)
- 設置集合點數:2,超時時間>2*1000/(10/2)=400ms

運行
2.設置集合點數:7,超時時間:0
運行結果:剩下2個請求,無法構成7個集合數,導致一直等待。點擊stop剩下2個請求運行后結束執行
3.設置集合點數:7,超時時間:1500
運行:剩下2個請求,無法構成7個集合數,通過日志可以看到等待時間超過了1500ms,執行這兩個請求后將終止運行
4.設置集合點數:20>10(線程數),超時時間0,將無法發送請求。點擊stop會將30次請求全部執行,並不能按20個絕對並發執行