北京上地做網(wǎng)站seo西安
大家好!我是今越。在軟件開發(fā)中我們經(jīng)常會遇到一些性能指標,下面就帶大家一起來看看。
QPS
Queries Per Second,每秒查詢率,一臺服務(wù)器每秒能夠響應(yīng)的查詢次數(shù)。它是對一個特定的查詢服務(wù)器在規(guī)定時間內(nèi)所處理流量多少的衡量標準, 即每秒的響應(yīng)請求數(shù),也即是最大吞吐能力。
在互聯(lián)網(wǎng)中,作為域名系統(tǒng)服務(wù)器的機器的性能經(jīng)常用每秒查詢率來衡量。
如何估算自己項目的 QPS?
使用日志估算即可,比如在中間件里記錄訪問日志,最終統(tǒng)計 1s 內(nèi)有多少個訪問,QPS 就是多大。一個接口的 QPS 跟業(yè)務(wù)流程有關(guān),跟是否使用緩存有關(guān)。
不使用緩存:大約 8 核 16g 機器,QPS 400 多,如果橫向擴展,10 臺 8 核 16g 的機器,QPS 大約 4000 多;
使用緩存:大約 8 核 16g 機器,QPS 破千沒問題;
TPS
Transactions Per Second,每秒處理的事務(wù)數(shù),包括一條消息入和一條消息出,加上一次用戶數(shù)據(jù)庫訪問。
一個事務(wù)是指一個客戶端向服務(wù)器發(fā)送請求然后服務(wù)器做出反應(yīng)的過程。客戶端在發(fā)送請求時開始計時,收到服務(wù)器響應(yīng)后結(jié)束計時,以此來計算使用的時間和完成的事務(wù)個數(shù)。
TPS 的過程包括:客戶端請求服務(wù)端、服務(wù)端內(nèi)部處理、服務(wù)端返回客戶端。
QPS VS TPS
QPS 基本類似于 TPS,但是不同的是,對于一個頁面的一次訪問,形成一個 TPS;但一次頁面請求,可能產(chǎn)生多次對服務(wù)器的請求,服務(wù)器對這些請求,就可計入 QPS。
例如,訪問一個 index 頁面會請求服務(wù)器 3 次,包括一次 html,一次 css,一次 js,那么訪問這一個頁面就會產(chǎn)生一個 T,產(chǎn)生三個 Q。
RT
Response Time,響應(yīng)時間,指執(zhí)行一個請求從開始到最后收到響應(yīng)數(shù)據(jù)所花費的總體時間,即從客戶端發(fā)起請求到收到服務(wù)器響應(yīng)結(jié)果的時間。它是一個系統(tǒng)最重要的指標之一,它的數(shù)值大小直接反應(yīng)了系統(tǒng)的快慢。
并發(fā)數(shù)
并發(fā)數(shù),指系統(tǒng)同時處理的請求或事務(wù)數(shù),可以直接理解為:系統(tǒng)同時處理的請求數(shù)量。它反應(yīng)了系統(tǒng)的負載能力。
吞吐量
吞吐量是指系統(tǒng)在單位時間內(nèi)處理請求的數(shù)量,TPS、QPS 都是吞吐量的常用量化指標。
系統(tǒng)吞吐量要素
一個系統(tǒng)的吞吐量(承壓能力)與 request(請求)對 CPU 的消耗,外部接口,IO 等等緊密關(guān)聯(lián)。單個 request 對 CPU 消耗越高,外部系統(tǒng)接口,IO 影響速度越慢,系統(tǒng)吞吐能力越低,反之越高。
系統(tǒng)吞吐量幾個重要參數(shù):QPS / TPS、并發(fā)數(shù)、響應(yīng)時間。
QPS / TPS:每秒請求/事務(wù)數(shù)
并發(fā)數(shù):系統(tǒng)同時處理的請求/事務(wù)數(shù)
響應(yīng)時間:一般取平均響應(yīng)時間
三者的關(guān)系
QPS = 并發(fā)數(shù) / 平均響應(yīng)時間
并發(fā)數(shù) = QPS * 平均響應(yīng)時間
1)例如,系統(tǒng) QPS 為 1w,每個請求的響應(yīng)時間都是 2s,那么并發(fā)數(shù)就是 2w。
2)例如,按二八定律來看,如果每天 80% 的訪問集中在 20% 的時間里,這 20% 時間就叫做峰值時間。
公式:( 總 PV 數(shù) * 80% ) / ( 每天秒數(shù) * 20% ) = 峰值時間 QPS
機器:峰值時間 QPS / 單臺機器的 QPS = 需要的機器數(shù)
每天 300w PV 在單臺機器上,這臺機器需要多少 QPS?
( 3000000 * 0.8 ) / ( 86400 * 0.2 ) = 139 (QPS)
如果一臺機器的 QPS 是 58,需要幾臺機器來支持?
139 / 58 = 3
PV
Page View,頁面訪問量,即頁面瀏覽量或點擊量,用戶每次刷新即被計算一次??梢越y(tǒng)計服務(wù)一天的訪問日志得到。
UV
Unique Visitor,獨立訪客,統(tǒng)計 1 天內(nèi)訪問某站點的用戶數(shù)??梢越y(tǒng)計服務(wù)一天的訪問日志并根據(jù)用戶的唯一標識去重得到。
DAU
Daily Active User,日活躍用戶數(shù)量。常用于反映網(wǎng)站、APP、網(wǎng)游的運營情況。DAU 通常統(tǒng)計一日(統(tǒng)計日)之內(nèi),登錄或使用了某個產(chǎn)品的用戶數(shù)(去除重復(fù)登錄的用戶),與 UV 概念相似。
MAU
Month Active User,月活躍用戶數(shù)量,指網(wǎng)站、APP 等去重后的月活躍用戶數(shù)量。
服務(wù)端性能影響的因素
衡量服務(wù)性能的指標,主要有兩個:
1)QPS(Query Per Second,每秒請求數(shù))
2)響應(yīng)時間(Response Time,RT),它可以理解為服務(wù)器處理響應(yīng)的耗時。
正常情況下,響應(yīng)時間越短,QPS 則越高。
在單線程的情況下,是呈線性關(guān)系。但也不是無限增長,RT 總會有極限值。
單線程 QPS = 1000ms / RT
多線程 QPS = (1000ms / 響應(yīng)時間) * 線程數(shù)
最佳線程數(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)時間增加;
唯有熱愛可抵歲月漫長。我是今越,歡迎大家點贊、收藏和評論,感謝支持!