并發用戶數與TPS之間的關系
并發用戶數:指的是現實系統中操作業務的用戶,在性能測試工具中,一般稱為虛擬用戶數(Virutal User),注意并發用戶數跟注冊用戶數、在線用戶數有很大差別的,并發用戶數一定會對服務器產生壓力的,而在線用戶數只是 ”掛” 在系統上,對服務器不產生壓力,注冊用戶數一般指的是數據庫中存在的用戶數。
TPS:Transaction Per Second, 每秒事務數, 是衡量系統性能的一個非常重要的指標,
TPS和事務響應時間的關系
例子:一個高速路有10個入口,每個入口每秒鐘只能進1輛車
請問1秒鐘最多能進幾輛車?
TPS=10每輛車需要多長時間進行響應?
reponse time = 1改成20輛車,每秒能進幾輛?每輛車的響應時間是多長?
TPS = 10,reponse time = 1入口擴展到20個,每秒能進幾輛?每輛車的響應時間是多長?
TPS = 20,reponse time = 1看看,現在TPS變了,響應時間沒變,TPS和響應時間有關系嗎?
沒關系如何理解?
TPS和響應時間在理想狀態下都是額定值,把入口看成線程池,如果有20個入口,并發數只有10的時候,TPS就是10,而響應時間始終是1,說明并發數不夠,需要增加并發數達到TPS的峰值。同樣是20個入口,如果并發數變成100的話,TPS和響應時間會怎么樣呢?
并發數到100的時候,就會出現堵車,堵車了平均每個車過去的時間就長了,把100個車按照20一份分成5份,第5份的等待時間就是最長的,從等待開始到這個車進去,實際花費了5秒,那100輛車都過去的響應時間就是(5+4+3+2+1)/5=3,平均的TPS就是(20/1+20/2+20/3+20/4+20/5)/5=8.89(我怎么感覺應該是100/(5+4+3+2+1)=6.67啊!)由此可知,TPS和響應時間宏觀上是倒數關系,但是兩者實際上木有直接的關系的,在上例中,系統只存在20個線程,100的并發就會造成線程的等待,引起平均響應時間從1秒增加到3秒,TPS從20下降到9,TPS和響應時間都是單獨計算出來的,并不是互相算出來的!
同樣可知,在并發量保持不變的情況下,提高TPS的手段有幾種?
A、增加線程池的數量(入口)
B、降低每輛車入關的時間(也就是提高單個線程的處理效率)從TPS和response time的定義查看這2者的區別?
TPS = 在場景或者灰化步驟運行的每一秒鐘中,每個事務通過、失敗以及停止的次數.
也就是說,TPS = 總的通過、失敗的事務總數/整個場景的運行時間;
reponse time = 每個事務完成實際需要的時間/事務處理數目
因此,這2個東西壓根就是木有關系的!
如何評估系統的性能是否穩定
一個正常的系統,在不斷加壓的過程,應該經歷下面五個階段:
? 第一階段:并發用戶逐漸增加,系統的TPS(每秒處理事務筆數)逐步增大,直到達到最大值,這一階段事務的響應時間不會有太大變化,會非常穩定;
? 第二階段:并發用戶繼續增加,TPS基本維持在最大值不變,但響應時間將會逐步變長。
? 第三階段:并發用戶繼續增加,TPS將會有少量下降(20%以內),但是決不能快速急劇下降,響應時間仍會逐步變長。
本階段可以拒絕服務,但是不能宕機。
? 第四階段:并發用戶逐步減小,系統處理能力開始得到恢復,TPS能夠逐步恢復到之前的最大值,響應時間開始變短;
? 第五階段:壓力逐步降為零,TPS繼續降低,響應時間繼續變快,所有占用的CPU/內存/IO資源得到釋放。
http://www.51testing.com/html/66/587566-855826.html
http://www.aliyun.com/product/pts
http://hitest.aliyun.com/front/share/searchShare.htm?spm=0.0.0.0.muWanp&catId=3