QPS
原理:每天80%的訪問集中在20%的時間里帘饶,這20%時間叫做峰值時間。
公式:( 總PV數(shù) * 80% ) / ( 每天秒數(shù) * 20% ) = 峰值時間每秒請求數(shù)(QPS) 群扶。
機器:峰值時間每秒QPS / 單臺機器的QPS = 需要的機器 及刻。
每天300w PV 的在單臺機器上,這臺機器需要多少Q(mào)PS竞阐?
( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)缴饭。
一般需要達到139QPS,因為是峰值骆莹。
QPS?
每秒查詢率QPS是對一個特定的查詢服務(wù)器在規(guī)定時間內(nèi)所處理流量多少的衡量標準颗搂。
每秒查詢率
因特網(wǎng)上,經(jīng)常用每秒查詢率來衡量域名系統(tǒng)服務(wù)器的機器的性能幕垦,其即為QPS峭火。
對應(yīng)fetches/sec毁习,即每秒的響應(yīng)請求數(shù),也即是最大吞吐能力卖丸。
需要對吞吐量纺且、TPS、QPS稍浆、并發(fā)數(shù)载碌、響應(yīng)時間(RT)幾個概念做下了解,查自百度百科衅枫,記錄如下:
1. 響應(yīng)時間(RT)?
響應(yīng)時間是一個系統(tǒng)最重要的指標之一嫁艇,它的數(shù)值大小直接反應(yīng)了系統(tǒng)的快慢。響應(yīng)時間是指執(zhí)行一個請求從開始到最后收到響應(yīng)數(shù)據(jù)所花費的總體時間,即從客戶端發(fā)起請求到收到服務(wù)器響應(yīng)結(jié)果的時間弦撩。響應(yīng)時間是指系統(tǒng)對請求作出響應(yīng)的時間步咪。直觀上看,這個指標與人對軟件性能的主觀感受是非常一致的益楼,因為它完整地記錄了整個計算機系統(tǒng)處理請求的時間猾漫。由于一個系統(tǒng)通常會提供許多功能,而不同功能的處理邏輯也千差萬別感凤,因而不同功能的響應(yīng)時間也不盡相同悯周,甚至同一功能在不同輸入數(shù)據(jù)的情況下響應(yīng)時間也不相同。所以陪竿,在討論一個系統(tǒng)的響應(yīng)時間時禽翼,人們通常是指該系統(tǒng)所有功能的平均時間或者所有功能的最大響應(yīng)時間。當(dāng)然族跛,往往也需要對每個或每組功能討論其平均響應(yīng)時間和最大響應(yīng)時間闰挡。?
對于單機的沒有并發(fā)操作的應(yīng)用系統(tǒng)而言,人們普遍認為響應(yīng)時間是一個合理且準確的性能指標礁哄。需要指出的是长酗,響應(yīng)時間的絕對值并不能直接反映軟件的性能的高低,軟件性能的高低實際上取決于用戶對該響應(yīng)時間的接受程度姐仅。對于一個游戲軟件來說花枫,響應(yīng)時間小于100毫秒應(yīng)該是不錯的,響應(yīng)時間在1秒左右可能屬于勉強可以接受掏膏,如果響應(yīng)時間達到3秒就完全難以接受了劳翰。而對于編譯系統(tǒng)來說,完整編譯一個較大規(guī)模軟件的源代碼可能需要幾十分鐘甚至更長時間馒疹,但這些響應(yīng)時間對于用戶來說都是可以接受的佳簸。
2. 吞吐量(Throughput)?
? ? ? ?吞吐量是指系統(tǒng)在單位時間內(nèi)處理請求的數(shù)量。對于無并發(fā)的應(yīng)用系統(tǒng)而言,吞吐量與響應(yīng)時間成嚴格的反比關(guān)系生均,實際上此時吞吐量就是響應(yīng)時間的倒數(shù)听想。前面已經(jīng)說過,對于單用戶的系統(tǒng)马胧,響應(yīng)時間(或者系統(tǒng)響應(yīng)時間和應(yīng)用延遲時間)可以很好地度量系統(tǒng)的性能汉买,但對于并發(fā)系統(tǒng),通常需要用吞吐量作為性能指標佩脊。?
對于一個多用戶的系統(tǒng)蛙粘,如果只有一個用戶使用時系統(tǒng)的平均響應(yīng)時間是t,當(dāng)有你n個用戶使用時威彰,每個用戶看到的響應(yīng)時間通常并不是n×t出牧,而往往比n×t小很多(當(dāng)然,在某些特殊情況下也可能比n×t大歇盼,甚至大很多)舔痕。這是因為處理每個請求需要用到很多資源,由于每個請求的處理過程中有許多不走難以并發(fā)執(zhí)行豹缀,這導(dǎo)致在具體的一個時間點伯复,所占資源往往并不多。也就是說在處理單個請求時耿眉,在每個時間點都可能有許多資源被閑置边翼,當(dāng)處理多個請求時鱼响,如果資源配置合理鸣剪,每個用戶看到的平均響應(yīng)時間并不隨用戶數(shù)的增加而線性增加。實際上丈积,不同系統(tǒng)的平均響應(yīng)時間隨用戶數(shù)增加而增長的速度也不大相同筐骇,這也是采用吞吐量來度量并發(fā)系統(tǒng)的性能的主要原因。一般而言江滨,吞吐量是一個比較通用的指標铛纬,兩個具有不同用戶數(shù)和用戶使用模式的系統(tǒng),如果其最大吞吐量基本一致唬滑,則可以判斷兩個系統(tǒng)的處理能力基本一致告唆。
3、TPS(TransactionsPerSecond)
? ? ?也就是事物數(shù)/秒晶密。它是軟件測試結(jié)果的測量單位擒悬。一個事務(wù)是指一個客戶機向服務(wù)器發(fā)送請求然后服務(wù)器做出反應(yīng)的過程〉炯瑁客戶機在發(fā)送請時開始計時懂牧,收到服務(wù)器響應(yīng)后結(jié)束計時,以此來計算使用的時間和完成的事務(wù)個數(shù)
4尊勿、 并發(fā)用戶數(shù)?
? ? ? ? ?并發(fā)用戶數(shù)是指系統(tǒng)可以同時承載的正常使用系統(tǒng)功能的用戶的數(shù)量(即是指系統(tǒng)同時能處理的請求數(shù)量)僧凤,這個也是反應(yīng)了系統(tǒng)的負載能力畜侦。與吞吐量相比,并發(fā)用戶數(shù)是一個更直觀但也更籠統(tǒng)的性能指標躯保。實際上旋膳,并發(fā)用戶數(shù)是一個非常不準確的指標,因為用戶不同的使用模式會導(dǎo)致不同用戶在單位時間發(fā)出不同數(shù)量的請求途事。一網(wǎng)站系統(tǒng)為例溺忧,假設(shè)用戶只有注冊后才能使用,但注冊用戶并不是每時每刻都在使用該網(wǎng)站盯孙,因此具體一個時刻只有部分注冊用戶同時在線鲁森,在線用戶就在瀏覽網(wǎng)站時會花很多時間閱讀網(wǎng)站上的信息,因而具體一個時刻只有部分在線用戶同時向系統(tǒng)發(fā)出請求振惰。這樣歌溉,對于網(wǎng)站系統(tǒng)我們會有三個關(guān)于用戶數(shù)的統(tǒng)計數(shù)字:注冊用戶數(shù)、在線用戶數(shù)和同時發(fā)請求用戶數(shù)骑晶。由于注冊用戶可能長時間不登陸網(wǎng)站痛垛,使用注冊用戶數(shù)作為性能指標會造成很大的誤差。而在線用戶數(shù)和同事發(fā)請求用戶數(shù)都可以作為性能指標桶蛔。相比而言匙头,以在線用戶作為性能指標更直觀些,而以同時發(fā)請求用戶數(shù)作為性能指標更準確些仔雷。?
5蹂析、QPS每秒查詢率(Query Per Second)?
每秒查詢率QPS是對一個特定的查詢服務(wù)器在規(guī)定時間內(nèi)所處理流量多少的衡量標準,在因特網(wǎng)上碟婆,作為域名系統(tǒng)服務(wù)器的機器的性能經(jīng)常用每秒查詢率來衡量电抚。對應(yīng)fetches/sec,即每秒的響應(yīng)請求數(shù)竖共,也即是最大吞吐能力蝙叛。(看來是類似于TPS顽冶,但是不同的是测砂,對于一個頁面的一次訪問箕戳,形成一個TPS狮暑;但一次頁面請求圾亏,可能產(chǎn)生多次對服務(wù)器的請求救恨,服務(wù)器對這些請求应结,就可計入“QPS”之中堆生。
例:訪問一個頁面會請求服務(wù)器3次匣沼,一次放狰挡,產(chǎn)生一個“T”,產(chǎn)生3個“Q”)
之間的計算關(guān)系:
QPS = 并發(fā)量 / 平均響應(yīng)時間?
并發(fā)量 = QPS * 平均響應(yīng)時間
舉個例子來理解下上述幾個概念。
公式:( 總PV數(shù) * 80% ) / ( 每天秒數(shù) * 20% ) = 峰值時間每秒請求數(shù)(QPS)?
機器:峰值時間每秒QPS / 單臺機器的QPS = 需要的機器
1加叁、每天300w PV 的在單臺機器上倦沧,這臺機器需要多少Q(mào)PS??
( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)
2它匕、如果一臺機器的QPS是58展融,需要幾臺機器來支持??
? 139 / 58 = 3
單線程QPS公式豫柬,QPS=1000ms/RT,對同一個系統(tǒng)而言告希,支持的線程數(shù)越多,QPS越高烧给。假設(shè)一個RT是80ms,則可以很容易的計算出QPS,QPS = 1000/80 = 12.5
多線程場景燕偶,如果把服務(wù)端的線程數(shù)提升到2,那么整個系統(tǒng)的QPS則為 2*(1000/80) = 25, 可見QPS隨著線程的增加而線性增長础嫡,那QPS上不去就加線程唄指么,聽起來很有道理,公式也說的通榴鼎,但是往往現(xiàn)實并非如此伯诬。
最佳線程數(shù)量
剛好消耗完服務(wù)器的瓶頸資源的臨界線程數(shù),公式如下
最佳線程數(shù)量=((線程等待時間+線程cpu時間)/線程cpu時間)* cpu數(shù)量
特性:
1.在達到最佳線程數(shù)的時候巫财,線程數(shù)量繼續(xù)遞增盗似,則QPS不變,而響應(yīng)時間變長平项,持續(xù)遞增線程數(shù)量赫舒,則QPS開始下降
2.每個系統(tǒng)都有其最佳線程數(shù)量,但是不同狀態(tài)下葵礼,最佳線程數(shù)量是會變化的
3.瓶頸資源可以是CPU,可以是內(nèi)存号阿,可以是鎖資源并鸵,IO資源
超過最佳線程數(shù)-導(dǎo)致資源的競爭
超過最佳線程數(shù)-響應(yīng)時間遞增
QPS和RT的關(guān)系鸳粉?
1.對于大部分web系統(tǒng),響應(yīng)時間一般由CPU執(zhí)行時間园担,線程等待時間(IO等待届谈,sleep, wait)時間組成。QPS和RT成反比關(guān)系
2.在實際的測試環(huán)境中弯汰,QPS和RT并不是非常直接的反比關(guān)系
案例說明:
減少響應(yīng)時間,并不能有效的提升QPS
通過這個例子,有幾點可以明確
1艰山、如果要提升服務(wù)器端的響應(yīng)時間RT采用減少10的時間能達到最佳效果,比如合并多個
10請求
2、如果要提升QPS,采用優(yōu)化CPU的時間能達到最佳效果
3咏闪、但是并不絕對,但是足以證明 hepser優(yōu)化的例子