在壓力測試時,可能需要使用jmeter的梯度加壓。而在使用梯度加壓時,大部分tester會對這一點疑惑:設置的總線程是100,但聚合報告中線程數遠超100個 ,為什麼梯度加壓會有這樣的現象?用事實説話,本文用示例去解釋這一點。
環境:
先設置梯度加壓的場景,訪問某網站,具體如下:
從這個梯度加壓設置的參數,我們可以看出設置的總線程數為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次
(實際測試中情況並非如此,因為隨着負載增加,響應時間增大,每秒迭代次數減小,最終請求數也會減小。本文只是介紹思路。)
本文借鑑別人的文章。