?摘自:https://help.aliyun.com/document_detail/29343.html?spm=5176.doc29330.6.614.23S6Xy
1. 背景
在做性能測(cè)試的時(shí)候态兴,很多人都用并發(fā)用戶數(shù)來(lái)衡量系統(tǒng)的性能胰蝠,覺(jué)得系統(tǒng)能支撐的并發(fā)用戶數(shù)越多,系統(tǒng)的性能就越好捎迫;對(duì)TPS不是非常理解,也根本不知道它們之間的關(guān)系宁昭,因此非常有必要進(jìn)行解釋瓷患。
2. 術(shù)語(yǔ)定義
并發(fā)用戶數(shù):簡(jiǎn)稱VU ,指的是現(xiàn)實(shí)系統(tǒng)中操作業(yè)務(wù)的用戶,在性能測(cè)試工具中塑猖,一般稱為虛擬用戶數(shù)(Virutal User)竹祷,注意并發(fā)用戶數(shù)跟注冊(cè)用戶數(shù)、在線用戶數(shù)有很大差別的羊苟,并發(fā)用戶數(shù)一定會(huì)對(duì)服務(wù)器產(chǎn)生壓力的塑陵,而在線用戶數(shù)只是 ”掛” 在系統(tǒng)上,對(duì)服務(wù)器不產(chǎn)生壓力蜡励,注冊(cè)用戶數(shù)一般指的是數(shù)據(jù)庫(kù)中存在的用戶數(shù)令花。
處理能力: 簡(jiǎn)稱TPS, 每秒事務(wù)數(shù), 是衡量系統(tǒng)性能的一個(gè)非常重要的指標(biāo)。
響應(yīng)時(shí)間:簡(jiǎn)稱RT,指的是業(yè)務(wù)從客戶端發(fā)起到客戶端接受的時(shí)間凉倚。
3. Vu和TPS換算
簡(jiǎn)單例子:在術(shù)語(yǔ)中解釋了TPS是每秒事務(wù)數(shù)兼都,但是事務(wù)時(shí)要靠虛擬用戶做出來(lái)的,假如1個(gè)虛擬用戶在1秒內(nèi)完成1筆事務(wù)稽寒,那么TPS明顯就是1俯抖;如果某筆業(yè)務(wù)響應(yīng)時(shí)間是1ms,那么1個(gè)用戶在1秒內(nèi)能完成1000筆事務(wù),TPS就是1000了瓦胎;如果某筆業(yè)務(wù)響應(yīng)時(shí)間是1s,那么1個(gè)用戶在1秒內(nèi)只能完成1筆事務(wù)芬萍,要想達(dá)到1000TPS,至少需要1000個(gè)用戶搔啊;因此可以說(shuō)1個(gè)用戶可以產(chǎn)生1000TPS柬祠,1000個(gè)用戶也可以產(chǎn)生1000TPS,無(wú)非是看響應(yīng)時(shí)間快慢负芋。
復(fù)雜公式: 試想一下復(fù)雜場(chǎng)景漫蛔,多個(gè)腳本,每個(gè)腳本里面定義了多個(gè)事務(wù)(例如一個(gè)腳本里面有100個(gè)請(qǐng)求旧蛾,我們把這100個(gè)連續(xù)請(qǐng)求叫做Action,只有第10個(gè)請(qǐng)求莽龟,第20個(gè)請(qǐng)求分別定義了事務(wù)10和事務(wù)20)具體公式如下:
符號(hào)代表意義:
Vui表示的是第i個(gè)腳本使用的并發(fā)用戶數(shù)
Rtj表示的是第i個(gè)腳本第j個(gè)事務(wù)花費(fèi)的時(shí)間,此時(shí)間會(huì)影響整個(gè)Action時(shí)間
Rti表示的是第i個(gè)腳本一次完成所有操作的時(shí)間锨天,即Action時(shí)間
n 表示的是第n個(gè)腳本
m 表示的是每個(gè)腳本中m個(gè)事務(wù)
那么第j個(gè)事務(wù)的TPS = Vui/Rti
總的TPS=
4. 如何獲取Vu和TPS
并發(fā)用戶數(shù)(Vu)獲取
新系統(tǒng):沒(méi)有歷史數(shù)據(jù)作參考毯盈,只能通過(guò)業(yè)務(wù)部門(mén)進(jìn)行評(píng)估。
舊系統(tǒng):對(duì)于已經(jīng)上線的系統(tǒng)病袄,可以選取高峰時(shí)刻搂赋,在一定時(shí)間內(nèi)使用系統(tǒng)的人數(shù)赘阀,這些人數(shù)認(rèn)為屬于在線用戶數(shù),并發(fā)用戶數(shù)取10%就可以了脑奠,例如在半個(gè)小時(shí)內(nèi)基公,使用系統(tǒng)的用戶數(shù)為10000,那么取10%作為并發(fā)用戶數(shù)基本就夠了宋欺。
TPS獲取 新系統(tǒng):沒(méi)有歷史數(shù)據(jù)作參考轰豆,只能通過(guò)業(yè)務(wù)部門(mén)進(jìn)行評(píng)估。
舊系統(tǒng):對(duì)于已經(jīng)上線的系統(tǒng)齿诞,可以選取高峰時(shí)刻秒咨,在5分鐘或10分鐘內(nèi),獲取系統(tǒng)每筆交易的業(yè)務(wù)量和總業(yè)務(wù)量掌挚,按照單位時(shí)間內(nèi)完成的筆數(shù)計(jì)算出TPS雨席,即業(yè)務(wù)筆數(shù)/單位時(shí)間(560或1060)。
5. 如何評(píng)價(jià)系統(tǒng)的性能
針對(duì)服務(wù)器端的性能吠式,以TPS為主來(lái)衡量系統(tǒng)的性能陡厘,并發(fā)用戶數(shù)為輔來(lái)衡量系統(tǒng)的性能,如果必須要用并發(fā)用戶數(shù)來(lái)衡量的話特占,需要一個(gè)前提糙置,那就是交易在多長(zhǎng)時(shí)間內(nèi)完成,因?yàn)樵谙到y(tǒng)負(fù)載不高的情況下是目,將思考時(shí)間(思考時(shí)間的值等于交易響應(yīng)時(shí)間)加到腳本中谤饭,并發(fā)用戶數(shù)基本可以增加一倍,因此用并發(fā)用戶數(shù)來(lái)衡量系統(tǒng)的性能沒(méi)太大的意義懊纳。
6. 相關(guān)案例
通過(guò)12306網(wǎng)站性能測(cè)試和某國(guó)有銀行性能測(cè)試案例揉抵,發(fā)現(xiàn)不需要用上萬(wàn)的用戶并發(fā)去進(jìn)行測(cè)試,只要系統(tǒng)處理業(yè)務(wù)時(shí)間足夠快嗤疯,幾百個(gè)用戶甚至幾十個(gè)用戶就可以達(dá)到目的冤今。另外咨詢很多專(zhuān)家做過(guò)的性能測(cè)試項(xiàng)目,基本都沒(méi)有超過(guò)5000用戶并發(fā)茂缚。
因此對(duì)于大型系統(tǒng)戏罢、業(yè)務(wù)量非常高、硬件配置足夠多的情況下脚囊,5000用戶并發(fā)就足夠了龟糕;對(duì)于中小型系統(tǒng),1000用戶并發(fā)就足夠了悔耘。
7. 性能測(cè)試策略
做性能測(cè)試需要一套標(biāo)準(zhǔn)化流程及測(cè)試策略讲岁,并發(fā)用戶數(shù)只是指標(biāo)考慮的一個(gè),在做負(fù)載測(cè)試的時(shí)候,一般都是按照梯度施壓的方式去加用戶數(shù)催首,而不是在沒(méi)有預(yù)估的情況下,一次加幾萬(wàn)個(gè)用戶泄鹏,郎任,交易失敗率非常高,響應(yīng)時(shí)間非常長(zhǎng)备籽,已經(jīng)超過(guò)了使用者忍受范圍內(nèi)舶治,這樣做沒(méi)有多大的意義,這就好比“有多少錢(qián)可以干多少事”一樣车猬,需要選擇相關(guān)的策略霉猛。
8. 總結(jié)
系統(tǒng)的性能由TPS決定,跟并發(fā)用戶數(shù)沒(méi)有多大關(guān)系珠闰。在同樣的TPS下惜浅,可以由不同的用戶數(shù)去壓(通過(guò)加思考時(shí)間設(shè)置)。
系統(tǒng)的最大TPS是一定的(在一個(gè)范圍內(nèi))伏嗜,但并發(fā)用戶數(shù)不一定坛悉,可以調(diào)整。
建議性能測(cè)試的時(shí)候承绸,不要設(shè)置過(guò)長(zhǎng)的思考時(shí)間裸影,以最壞的情況下對(duì)服務(wù)器施壓。
一般情況下军熏,大型系統(tǒng)(業(yè)務(wù)量大轩猩、機(jī)器多)做壓力測(cè)試,5000個(gè)用戶并發(fā)就夠了荡澎,中小型系統(tǒng)做壓力測(cè)試均践,1000個(gè)用戶并發(fā)就足夠了。