整理了下Jmeter的Throughput和平均RT的計算,以下公式:html
TPS=(sample樣本數)/(最後一個線程啓動的時間+最後一個線程持續的時間-第一個線程啓動的時間)
RT=全部sample樣本響應時間和/樣本個數
1.TPS:每秒處理的事務數,jmeter的Throughput爲吞吐率(請求數/秒),在加了事務控制器後,TPS=Throughputapache
宏觀上:TPS=併發數/響應時間,jmeter的Throughput = (number of requests) / (total time) ,即服務器
Throughput =(sample樣本數)/(最後一個線程啓動的時間+最後一個線程持續的時間-第一個線程啓動的時間)併發
能夠這樣理解這個公式:絕對的併發是不存在的,請求發出的時間總有前後,絕對的TPS也是沒法計算的,統計的角度看,服務器處理請求總數/花費的時間便是TPS,這也是spa
爲何須要不斷增大用戶數來尋找服務器的最大TPS的緣由線程
2.平均響應時間=全部sample樣本響應時間和/樣本個數code
誤區:htm
TPS=請求數/RT (RT是全部事物的平均時間)
此TPS的計算公式是錯誤的blog
數學公式法:事務
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+4+3+2+1)=15 s,總請求數是5,因此A系統的TPS = 5/15 = 1/3,平均響應時間是(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