? ? ? 吞吐量
? ? 一個(gè)系統(tǒng)的吞吐量(承壓能力)需由 單個(gè)request對(duì)cpu的消耗、外部接口、IO等綜合評(píng)定,單個(gè)request對(duì)cpu消耗越高,外部系統(tǒng)接口、IO響應(yīng)越慢,系統(tǒng)吞吐能力也就越低
? ? ? ?系統(tǒng)吞吐量幾個(gè)重要參數(shù):QPS、TPS、并發(fā)數(shù)、響應(yīng)時(shí)間
????????QPS:Queries Per Second意思是“每秒查詢率”,是一臺(tái)服務(wù)器每秒能夠相應(yīng)的查詢次數(shù),是對(duì)一個(gè)特定的查詢服務(wù)器在規(guī)定時(shí)間內(nèi)所處理流量多少的衡量標(biāo)準(zhǔn)
? ??????TPS:是TransactionsPerSecond的縮寫,也就是事務(wù)數(shù)/秒。它是軟件測試結(jié)果的測量單位。一個(gè)事務(wù)是指一個(gè)客戶機(jī)向服務(wù)器發(fā)送請求然后服務(wù)器做出反應(yīng)的過程??蛻魴C(jī)在發(fā)送請求時(shí)開始計(jì)時(shí),收到服務(wù)器響應(yīng)后結(jié)束計(jì)時(shí),以此來計(jì)算使用的時(shí)間和完成的事務(wù)個(gè)數(shù)。
QPS vs TPS:QPS基本類似于TPS,但是不同的是,對(duì)于一個(gè)頁面的一次訪問,形成一個(gè)TPS;但一次頁面請求,可能產(chǎn)生多次對(duì)服務(wù)器的請求,服務(wù)器對(duì)這些請求,就可計(jì)入“QPS”之中。如,訪問一個(gè)頁面會(huì)請求服務(wù)器2次,一次訪問,產(chǎn)生一個(gè)“T”,產(chǎn)生2個(gè)“Q”
????????并發(fā)數(shù):?系統(tǒng)同時(shí)處理的request/事務(wù)數(shù);
? ? ? ? 并發(fā)用戶數(shù):指的是現(xiàn)實(shí)系統(tǒng)中操作業(yè)務(wù)的用戶;在性能測試工具中,一般稱為虛擬用戶數(shù)(Virutal User),注意并發(fā)用戶數(shù)跟注冊用戶數(shù)、在線用戶數(shù)有很大差別的,并發(fā)用戶數(shù)一定會(huì)對(duì)服務(wù)器產(chǎn)生壓力的,而在線用戶數(shù)只是?”掛”?在系統(tǒng)上,對(duì)服務(wù)器 不產(chǎn)生壓力,注冊用戶數(shù)一般指的是數(shù)據(jù)庫中存在的用戶數(shù)
????????響應(yīng)時(shí)間(RT):??一般取平均響應(yīng)時(shí)間
? ? ? (重要:并發(fā)有別于tps。TPS是每秒事務(wù)數(shù),但事務(wù)是基于虛擬用戶數(shù)(VU)的,假如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è)用戶;因此可以說1個(gè)用戶可以產(chǎn)生1000TPS,1000個(gè)用戶也可以產(chǎn)生1000TPS,無非是看響應(yīng)時(shí)間快慢)
? ? ? ?由此可推出他們之間的關(guān)系:
? ? ? ? ? ? QPS(TPS) = 并發(fā)數(shù)/平均響應(yīng)時(shí)間
? ? 看個(gè)實(shí)例:按照二八原則,百分之八十的訪問集中在百分之二十的時(shí)間(峰值時(shí)間)內(nèi)
? ? ? ? ? ? ? ? ? ? 總PV數(shù)*80%) / 總時(shí)間(秒)*20% = 峰值時(shí)間每秒請求數(shù)(QPS)
? ? ? ? ? ? ? ? ? ? 假設(shè):網(wǎng)站日PV100萬,則服務(wù)器需要至少多少Q(mào)PS?
? ? ? ? ? ? ? ? ? ? ? ? ? ? (1000000 * 0.8) / (86400 * 0.2) = 47(QPS)
? ? ? 某些情況下的計(jì)算中,需要引入Think?Time,從業(yè)務(wù)角度來看,這個(gè)時(shí)間指用戶進(jìn)行操作時(shí)每個(gè)請求之間的時(shí)間間隔,而在做新能測試時(shí),為了模擬這樣的時(shí)間間隔,引入了思考時(shí)間這個(gè)概念,來更加真實(shí)的模擬用戶的操作,即系統(tǒng)真實(shí)TPS(QPS) = 并發(fā)數(shù)/(響應(yīng)時(shí)間+Think Time)
? ??????當(dāng)沒有遇到性能瓶頸的時(shí)候,吞吐量與虛擬用戶數(shù)之間存在一定的聯(lián)系,可以采用以下公式計(jì)算:F=VU?*?R?/ T
??其中F為吞吐量,VU表示虛擬用戶個(gè)數(shù),R表示每個(gè)虛擬用戶發(fā)出的請求數(shù),T表示性能測試所用的時(shí)間