如何估算性能測(cè)試中的TPS和并發(fā)用戶數(shù)?

假設(shè)一個(gè)系統(tǒng)的業(yè)務(wù)有登錄、瀏覽帖子、發(fā)送新帖、回復(fù)帖子,訪問(wèn)高峰是上午10點(diǎn),日訪問(wèn)高峰PV約5208(含登錄1300、瀏覽2706、發(fā)帖526、回帖676)。系統(tǒng)響應(yīng)時(shí)間要求小于3秒,試計(jì)算此系統(tǒng)的TPS以及并發(fā)數(shù)。

如果分析業(yè)務(wù)量的數(shù)據(jù)是以PV來(lái)統(tǒng)計(jì)的,我們需要把PV轉(zhuǎn)化為T(mén)PS。

實(shí)際上一個(gè)PV即一次對(duì)服務(wù)器的客戶請(qǐng)求,可能還包含了很多資源請(qǐng)求,比如圖片、樣式、JS信息、文字等。而瀏覽器具有資源緩存功能,下次訪問(wèn)同樣資源將不會(huì)再?gòu)倪h(yuǎn)程服務(wù)器上下載,這大大加快了響應(yīng)速度。如果我們使用代理服務(wù)器訪問(wèn)外網(wǎng)資源時(shí),多數(shù)代理服務(wù)器也會(huì)緩存這些靜態(tài)數(shù)據(jù)。也就是說(shuō)瀏覽器與服務(wù)器之間的動(dòng)態(tài)數(shù)據(jù)的 Size 會(huì)小于靜態(tài)數(shù)據(jù)。

所以瀏覽器是否緩存了靜態(tài)數(shù)據(jù)對(duì)性能測(cè)試影響明顯。我們?cè)谧鲂阅軠y(cè)試時(shí),其中就有許多用戶可能是新用戶,在他們的瀏覽器上還沒(méi)有緩存這些靜態(tài)數(shù)據(jù),為了更準(zhǔn)確的模擬用戶請(qǐng)求,我們有必要不緩存這些靜態(tài)內(nèi)容。所以性能測(cè)試中是否緩存訪問(wèn)的靜態(tài)資源要根據(jù)業(yè)務(wù)情況而定。

本例中,我們把一個(gè)請(qǐng)求放在一個(gè)事務(wù)中來(lái)統(tǒng)計(jì)服務(wù)器的響應(yīng)時(shí)間。這么說(shuō),一個(gè)PV即是一個(gè)事務(wù)(每秒的PV量并不直接等同于TPS,因?yàn)橐淮慰蛻粽?qǐng)求可能包含了很多資源請(qǐng)求。如果我們不關(guān)心頁(yè)面刷新時(shí)請(qǐng)求資源的耗時(shí),此時(shí)我們就把每秒PV數(shù)等同于TPS)。比如一個(gè)功能頁(yè)面(瀏覽帖子)每秒會(huì)有10個(gè)PV,那么此功能的TPS即為10。

估算TPS

業(yè)務(wù)量一般要取系統(tǒng)業(yè)務(wù)高峰的值,才能代表系統(tǒng)的實(shí)際處理能力。系統(tǒng)在10點(diǎn)的訪問(wèn)高峰PV約5208,那么這個(gè)時(shí)段的TPS=5208/3600≈1.45嗎?

答案是否定的,因?yàn)樵谝恍r(shí)內(nèi)的吞吐量未必是平均的。

如果我們采集到的業(yè)務(wù)量數(shù)據(jù)能夠細(xì)分到每分鐘,TPS就越準(zhǔn)確。如果不能,可以按照二八原則。即80%的業(yè)務(wù)在20%的時(shí)間內(nèi)完成,TPS=(520880%)/(360020%)≈5.8。

估算并發(fā)數(shù)

  1. 由TPS進(jìn)行估算
  2. 由在線活動(dòng)用戶數(shù)估算
  3. 根據(jù)經(jīng)驗(yàn)估算

這里我們采用第一種方法。

因?yàn)門(mén)PS=事務(wù)數(shù)/時(shí)間,假設(shè)所有的事務(wù)都來(lái)自不同的用戶,那么并發(fā)數(shù)=事務(wù)數(shù)=TPS*時(shí)間。具體如下:

Vu(業(yè)務(wù)名稱)=TPS(業(yè)務(wù)名稱)*(Runtime+ThinkTime)

其中,Vu(業(yè)務(wù)名稱)表示此業(yè)務(wù)的虛擬用戶數(shù),即并發(fā)數(shù)。RunTime是測(cè)試程序/腳本運(yùn)行一次所消耗的時(shí)間,包括事務(wù)時(shí)間+非事務(wù)時(shí)間。ThinkTime是模擬用戶思考或者填寫(xiě)表單消耗的時(shí)間。

下面是發(fā)帖動(dòng)作的測(cè)試腳本偽代碼(T、TT、AT表示時(shí)間,單位為秒。AT一般都是非常小的,包含在事務(wù)時(shí)間中,可以忽略)。Runtime=T1+···+T7;ThinkTime=TT1+TT2。

image

業(yè)內(nèi)一般把 Think Time 設(shè)為3秒。測(cè)試需求中要求響應(yīng)時(shí)間小于3秒,我們就以3秒為閥值(為什么只有事務(wù)頁(yè)面是3秒,非事務(wù)時(shí)間是0.2秒???)??傻肰u=TPS(RunTime+ThinkTime)=5.8(T1+TT1+T2+T3+T4+T5+TT2+T6+T7)≈76。

如果只計(jì)算事務(wù)時(shí)間,Vu=TPST2=5.82≈12。

可以看到兩者之間的Vu數(shù)量相差巨大。由于一次迭代的時(shí)間會(huì)大于事務(wù)的響應(yīng)時(shí)間,如果在估算時(shí)不把非事務(wù)消耗的時(shí)間加入進(jìn)去,計(jì)算出來(lái)的12個(gè)并發(fā)用戶在測(cè)試執(zhí)行時(shí)很有可能無(wú)法達(dá)到TPS=5.8的目標(biāo)。

由于我們計(jì)算Vu時(shí),使用的是系統(tǒng)TPS(登錄、瀏覽、發(fā)帖、回帖合計(jì)),其中又以發(fā)帖業(yè)務(wù)消耗時(shí)間最長(zhǎng),所以計(jì)算出來(lái)的76個(gè)并發(fā)數(shù)實(shí)際上是系統(tǒng)業(yè)務(wù)的總并發(fā)數(shù),需要按比例分配到各個(gè)業(yè)務(wù)。

業(yè)務(wù)名稱 高峰業(yè)務(wù)量 TPS 并發(fā)數(shù) 響應(yīng)時(shí)間 事務(wù)成功率
登錄 1300 1.44 20 <3秒 >99%
瀏覽 2706 3.0 40 <3秒 >99%
發(fā)帖 526 0.58 7??? <3秒 >99%
回帖 676 0.75 10 <3秒 >99%
合計(jì) 5208 5.8 77 - -

實(shí)際上分配時(shí)由于有小數(shù)點(diǎn),向上取整(是合計(jì)向上取整,還是單個(gè)業(yè)務(wù)向上取整???),所以76個(gè)并發(fā)用戶分配后是77個(gè)。

并發(fā)數(shù)的計(jì)算說(shuō)到底還是一個(gè)估算,在性能測(cè)試執(zhí)行時(shí)需要根據(jù)實(shí)際情況調(diào)整。衡量性能的指標(biāo)還是要參考TPS實(shí)際達(dá)到了多少,響應(yīng)時(shí)間是多少,系統(tǒng)硬件(CPU、內(nèi)存等)指標(biāo)是否在限定范圍內(nèi)等要求。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 17天搞定GRE單詞。一本書(shū)。仿佛是做者的一個(gè)孩子,天下的父母對(duì)自己的孩子都不僅僅是愛(ài)。還像她成長(zhǎng),索性這本17天...
    竹子一件一件閱讀 270評(píng)論 0 0
  • 想你的時(shí)候 我總?cè)滩蛔∩瞪档仄诖?這個(gè)時(shí)候 你的心里是否也和我一樣滿滿地裝著都是思念… 百無(wú)聊賴 手機(jī)拿起 又放下...
    喵咕唡閱讀 475評(píng)論 0 5
  • 研究背景 當(dāng)前,中國(guó)汽車(chē)保有量已經(jīng)超過(guò)1.5億輛,奠定了汽車(chē)售后市場(chǎng)的規(guī)模基礎(chǔ)。全世界的品牌車(chē)型身影幾乎都能在中國(guó)...
    e2b448ddb713閱讀 591評(píng)論 0 3
  • 一些關(guān)于詞語(yǔ)的感受和受限制的語(yǔ)言、語(yǔ)句,需要修正和改變。 對(duì)于“不”要改成“怎么才能” 就先把這一個(gè)限制式的詞匯給...
    徐偉_1226閱讀 389評(píng)論 0 0

友情鏈接更多精彩內(nèi)容