在做性能測試的時候,很多人都用并發(fā)用戶數(shù)來衡量系統(tǒng)的性能,覺得系統(tǒng)能支撐的并發(fā)用戶數(shù)越多,系統(tǒng)的性能就越好;對TPS不是非常理解,也根本不知道它們之間的關系,因此非常有必要進行解釋。
并發(fā)用戶數(shù):指的是現(xiàn)實系統(tǒng)中操作業(yè)務的用戶,在性能測試工具中,一般稱為虛擬用戶數(shù)(Virutal User),注意并發(fā)用戶數(shù)跟注冊用戶數(shù)、在線用戶數(shù)有很大差別的,并發(fā)用戶數(shù)一定會對服務器產(chǎn)生壓力的,而在線用戶數(shù)只是 ”掛” 在系統(tǒng)上,對服務器不產(chǎn)生壓力,注冊用戶數(shù)一般指的是數(shù)據(jù)庫中存在的用戶數(shù)。
TPS:Transaction Per Second,每秒事務數(shù), 是衡量系統(tǒng)性能的一個非常重要的指標,
簡單例子:在術語中解釋了TPS是每秒事務數(shù),但是事務時要靠虛擬用戶做出來的,假如1個虛擬用戶在1秒內(nèi) 完成1筆事務,那么TPS明顯就是1;如果某筆業(yè)務響應時間是1ms,那么1個用戶在1秒內(nèi)能完成1000筆事務,TPS就是1000了;如果某筆業(yè)務響 應時間是1s,那么1個用戶在1秒內(nèi)只能完成1筆事務,要想達到1000TPS,至少需要1000個用戶;因此可以說1個用戶可以產(chǎn)生 1000TPS,1000個用戶也可以產(chǎn)生1000TPS,無非是看響應時間快慢。
復雜公式:
試想一下復雜場景,多個腳本,每個腳本里面定義了多個事務(例如一個腳本里面有100個請求,我們把這100個連續(xù)請求叫做Action,只有第10個請求,第20個請求分別定義了事務10和事務20)具體公式如下:
符號代表意義:
Vui表示的是第i個腳本使用的并發(fā)用戶數(shù)
Rtj表示的是第i個腳本第j個事務花費的時間,此時間會影響整個Action時間
Rti表示的是第i個腳本一次完成所有操作的時間,即Action時間
n 表示的是第n個腳本
m 表示的是每個腳本中m個事務
那么第j個事務的TPS = Vui/Rti
總的TPS=
并發(fā)用戶數(shù)(Vu)獲取
新系統(tǒng):沒有歷史數(shù)據(jù)作參考,只能通過業(yè)務部門進行評估。
舊系統(tǒng):對于已經(jīng)上線的系統(tǒng),可以選取高峰時刻,在一定時間內(nèi)使用系統(tǒng)的人數(shù),這些人數(shù)認為屬于在線用戶數(shù),并發(fā)用戶數(shù)取10%就可以了,例如在半個小時內(nèi),使用系統(tǒng)的用戶數(shù)為10000,那么取10%作為并發(fā)用戶數(shù)基本就夠了。
TPS獲取
新系統(tǒng):沒有歷史數(shù)據(jù)作參考,只能通過業(yè)務部門進行評估。
舊系統(tǒng):對于已經(jīng)上線的系統(tǒng),可以選取高峰時刻,在5分鐘或10分鐘內(nèi),獲取系統(tǒng)每筆交易的業(yè)務量和總業(yè)務量,按照單位時間內(nèi)完成的筆數(shù)計算出TPS,即業(yè)務筆數(shù)/單位時間(5*60或10*60)
針對服務器端的性能,以TPS為主來衡量系 統(tǒng)的性能,并發(fā)用戶數(shù)為輔來衡量系統(tǒng)的性能,如果必須要用并發(fā)用戶數(shù)來衡量的話,需要一個前提,那就是交易在多長時間內(nèi)完成,因為在系統(tǒng)負載不高的情況 下,將思考時間(思考時間的值等于交易響應時間)加到腳本中,并發(fā)用戶數(shù)基本可以增加一倍,因此用并發(fā)用戶數(shù)來衡量系統(tǒng)的性能沒太大的意義。
通過大量性能測試我們發(fā)現(xiàn)不需要用上萬的用戶并發(fā)去進行測試,只要系統(tǒng)處理業(yè)務時間足夠快,幾百個用戶甚至幾十個用戶就可以達到目的。另外咨詢很多專家做過的性能測試項目,基本都沒有超過5000用戶并發(fā)。
因此對于大型系統(tǒng)、業(yè)務量非常高、硬件配置足夠多的情況下,5000用戶并發(fā)就足夠了;對于中小型系統(tǒng),1000用戶并發(fā)就足夠了。
做性能測試需要一套 標準化流程及測試策略,并發(fā)用戶數(shù)只是指標考慮的一個,在做負載測試的時候,一般都是按照梯度施壓的方式去加用戶數(shù),而不是在沒有預估的情況下,一次加幾 萬個用戶,,交易失敗率非常高,響應時間非常長,已經(jīng)超過了使用者忍受范圍內(nèi),這樣做沒有多大的意義,這就好比“有多少錢可以干多少事”一樣,需要選擇相 關的策略。
從下圖對比項可以看出,PTS比Loadrunner(LR)更能讓客戶接受。
方向 | 對比項 | Loadrunner | PTS | 備注 |
基礎設施 | 被測系統(tǒng)軟硬件環(huán)境需要額外購買? | 需要 | 不需要 | 基礎設施軟硬件由阿里云提供,只需要購買服務 |
壓力機環(huán)境需要額外購買? | 需要 | 不需要 | 基礎設施軟硬件由PTS提供,只需要購買服務 | |
費用 | 費用 | 非常貴 | 便宜,按需收費 | 商業(yè)化工具License非常貴 |
功能 | 功能 | 強大 | 較強大 | LR很多功能基本上用不到,沒必要大馬拉小車 |
易用性 | 操作、學習等 | 困難 | 容易 | LR不易上手 |
穩(wěn)定性 | 系統(tǒng)穩(wěn)定性 | 較穩(wěn)定 | 非常穩(wěn)定 | LR壓測過程中經(jīng)常出現(xiàn)莫名其妙錯誤 |
場景模擬 | 場景模擬 條件 | 較真實 | 非常真實 | PTS分布在全國各地的分布式集群可以真實模擬出現(xiàn)實場景,而LR不太容易模擬,即使可以的話,控制機和壓力機通信經(jīng)常掉線 |
系統(tǒng)的性能由TPS決定,跟并發(fā)用戶數(shù)沒有多大關系。在同樣的TPS下,可以由不同的用戶數(shù)去壓(通過加思考時間設置)。
系統(tǒng)的最大TPS是一定的(在一個范圍內(nèi)),但并發(fā)用戶數(shù)不一定,可以調(diào)整。
建議性能測試的時候,不要設置過長的思考時間,以最壞的情況下對服務器施壓。
一般情況下,大型系統(tǒng)(業(yè)務量大、機器多)做壓力測試,5000個用戶并發(fā)就夠了,中小型系統(tǒng)做壓力測試,1000個用戶并發(fā)就足夠了。
文章轉(zhuǎn)載自:開源中國社區(qū) [http://www.oschina.net]