整理了下Jmeter的Throughput和平均RT的計算,如下公式:
TPS=(sample樣本數)/(最后一個線程啟動的時間+最后一個線程持續的時間-第一個線程啟動的時間)
RT=所有sample樣本響應時間和/樣本個數
1.TPS:每秒處理的事務數,jmeter的Throughput為吞吐率(請求數/秒),在加了事務控制器后,TPS=Throughput
宏觀上:TPS=並發數/響應時間,jmeter的Throughput = (number of requests) / (total time) ,即
Throughput =(sample樣本數)/(最后一個線程啟動的時間+最后一個線程持續的時間-第一個線程啟動的時間)
可以這樣理解這個公式:絕對的並發是不存在的,請求發出的時間總有先后,絕對的TPS也是無法計算的,統計的角度看,服務器處理請求總數/花費的時間即是TPS,這也是
為什么需要不斷增大用戶數來尋找服務器的最大TPS的原因
2.平均響應時間=所有sample樣本響應時間和/樣本個數
誤區:
TPS=請求數/RT (RT是所有事物的平均時間)
此TPS的計算公式是錯誤的
數學公式法:
TPS= (number of requests) / (total time) --------公式1 TPS的定義公式
TPS=1/RT * 請求數 = 樣本個數2/所有sample樣本響應時間和 -----------公式2 帶入公式 平均響應時間=所有sample樣本響應時間和/樣本個數
假設公式2等於公式1 ,則
(number of requests) / (total time) = 樣本個數2/所有sample樣本響應時間和
即:
1/ (total time) = 樣本個數 / 所有sample樣本響應時間和
顯然等式兩邊不成立,假設不成立
另:number of requests 是等於 樣本個數 等於 請求數
場景分析法:
場景1,A應用是單線程處理,處理一個請求需要1s,5個VU去請求一次,第一個請求花費了1s,第二個花了2s...第五個花了5s,5個請求總耗時5秒,5個請求響應時間的總和是(5+4+3+2+1)=15 s,總請求數是5,所以A系統的TPS = 5/5 = 1,平均響應時間是(5+4+3+2+1)/5=3s,此時若按照TPS=1/RT*請求數 計算,則TPS=1/3 * 5 = 5/3 , 顯然是不對的
場景2,當去請求多個事物時,此時這個公式是明顯錯誤的
參考:
http://www.i3geek.com/archives/1165
http://jmeter.apache.org/usermanual/glossary.html#Throughput
http://yhz61010.iteye.com/blog/1735874
http://www.cnblogs.com/ceshixuexi/p/7116683.html