在壓力測試時,可能需要使用jmeter的梯度加壓。而在使用梯度加壓時,大部分tester會對這一點疑惑:設置的總線程是100,但聚合報告中線程數遠超100個 ,為什麼梯度加壓會有這樣的現象?用事實説話,本文用示例去解釋這一點。

環境:

先設置梯度加壓的場景,訪問某網站,具體如下:

jemter1分鐘請求3000次怎麼設置_迭代

 

 

從這個梯度加壓設置的參數,我們可以看出設置的總線程數為50個,每2s增加5個,在1s內增加完成;然後線程保持30s;再然後,每2s停掉5個線程。

要正確理解最終請求數,需要明白每一秒鐘線程釋放了多少請求

 

分析:

在梯度加壓有三個階段:梯度加壓、持續負載、線程釋放。

梯度加壓:

如果該請求的平均響應時間是100ms,那麼1s鍾該請求可以迭代10次;

那麼在1s內如果啓動了5個線程,這1s內發出的請求數就是5*10=50次

接着運行2s後才開始加載下一波線程,在這2s內,它發出的請求數是2*5*10=100次

在2s之後,線程組又在1s內釋放5個請求,並運行2s,在這2s內,它發出的請求數是2*10*10=200次(此時是10個線程在運行)

以此類推,直到50個線程加載完之前,線程釋放的請求數是這樣的:(2*5*10)+(2*10*10)+(2*15*10)+(2*20*10)+(2*25*10)+....+(2*45*10)=4500次

持續負載:

(注意:為什麼最後不是2*50*10呢?因為從50個線程加載完之後,進行的就是30s的持續負載)

這30s內,總的請求數是30*50*10=15000次

線程釋放:

(30s負載結束後,線程開始梯度釋放)

此時即使線程在釋放,剩餘的線程依然在發起請求,請求數:(2*45*10)+(2*40*10)+(2*35*10)+(2*30*10)+(2*25*10)+....+(2*5*10)=4500次

 

所以,總的請求數=4500+15000+4500=24000次

(實際測試中情況並非如此,因為隨着負載增加,響應時間增大,每秒迭代次數減小,最終請求數也會減小。本文只是介紹思路。)

本文借鑑別人的文章。