㈠ 通俗易懂QPS、TPS、PV、UV、GMV、IP、RPS的概念解釋
關於 QPS、TPS、PV、UV、GMV、IP、RPS 這些詞語,看起來好像挺專業。但實際上,我認為是這是每個程序員必懂的知識點了,你可以搞不懂它們怎麼計算的,但是你最少要了解它們分別代表什麼意思。
2019年12月09日 - 初稿
閱讀原文 - https://wsgzao.github.io/post/qps/
擴展閱讀
Queries Per Second,每秒查詢數。每秒能夠響應的查詢次數。
QPS 是對一個特定的查詢伺服器在規定時間內所處理流量多少的衡量標准,在網際網路上,作為域名系統伺服器的機器的性能經常用每秒查詢率來衡量。每秒的響應請求數,也即是最大吞吐能力。
Transactions Per Second 的縮寫,每秒處理的事務數目。一個事務是指一個客戶機向伺服器發送請求然後伺服器做出反應的過程。客戶機在發送請求時開始計時,收到伺服器響應後結束計時,以此來計算使用的時間和完成的事務個數,最終利用這些信息作出的評估分。
TPS 的過程包括:客戶端請求服務端、服務端內部處理、服務端返回客戶端。
例如,訪問一個 Index 頁面會請求伺服器 3 次,包括一次 html,一次 css,一次 js,那麼訪問這一個頁面就會產生一個 「T」,產生三個 「Q」。
Page View 即頁面瀏覽量,通常是衡量一個網路新聞頻道或網站甚至一條網路新聞的主要指標。戶每一次對網站中的每個頁面訪問均被記錄 1 次。用戶對同一頁面的多次刷新,訪問量累計。
根據這個特性,刷網站的 PV 就很好刷了。
與 PV 相關的還有 RV ,即重復訪問者數量 Repeat Visitors。
訪問數(Unique Visitor)指獨立訪客訪問數,統計 1 天內訪問某站點的用戶數 (以 cookie 為依據),一台電腦終端為一個訪客。
(Internet Protocol)獨立 IP 數,是指 1 天內多少個獨立的 IP 瀏覽了頁面,即統計不同的 IP 瀏覽用戶數量。同一 IP 不管訪問了幾個頁面,獨立 IP 數均為 1;不同的 IP 瀏覽頁面,計數會加 1。IP 是基於用戶廣域網 IP 地址來區分不同的訪問者的,所以,多個用戶(多個區域網 IP)在同一個路由器(同一個廣域網 IP)內上網,可能被記錄為一個獨立 IP 訪問者。如果用戶不斷更換 IP,則有可能被多次統計。
是 Gross Merchandise Volume 的簡稱。只要是訂單,不管消費者是否付款、賣家是否發貨、是否退貨,都可放進 GMV 。
代表吞吐率,即 Requests Per Second 的縮寫。吞吐率是伺服器並發處理能力的量化描述,單位是 reqs/s,指的是某個並發用戶數下單位時間內處理的請求數。
某個並發用戶數下單位時間內能處理的最大的請求數,稱之為最大吞吐率。
㈡ TPS 與 QPS
TPS (Transaction per second),每秒事務數。計算公式:TPS = 事務的數量 / 執行總時間。
例如:10秒內執行了2個事務,那麼TPS = 2 / 10 = 0.2 ,那麼每個事務的響應時間就為5s。
QPS(Queries per second),每秒查詢數。計算公式:QPS = 每日的訪問量 / 每日 = 當日請求總數 / (60s * 60min * 24h )
日PV = QPS *(60s * 60min * 24h ) = QPS * 86400
如果我們要根據一個固定的日活躍PV數,一台機器有固定的QPS值,來計算所需要的伺服器數量的話,需要知道下面兩個計算概念:
峰值QPS = 每天的總PV數 * 0.8 / 86400 * 0.2 —— 這個含義為每天80%的訪問量集中在20%的時間里。
伺服器數量 = 峰值QPS / 單台機器的QPS
假設有5000000的日PV,那麼峰值QPS = 5000000 * 0.8 / 86400 * 0.2 = 231
假設一台機器的固定QPS為40,那麼就需要231/40 = 6(個)伺服器。
(對 TPS 和 QPS 的初步了解,歡迎各位讀者補充和指正)
㈢ 什麼是QPS、TPS、RT、吞吐量
一、QPS,每秒查詢
QPS:Queries Per Second意思是「每秒查詢率」,是一台伺服器每秒能夠相應的查詢次數,是對一個特定的查詢伺服器在規定時間內所處理流量多少的衡量標准。互聯網中,作為域名系統伺服器的機器的性能經常用每秒查詢率來衡量。
二、TPS,每秒事務
TPS:是TransactionsPerSecond的縮寫,也就是事務數/秒。它是軟體測試結果的測量單位。一個事務是指一個客戶機向伺服器發送請求然後伺服器做出反應的過程。客戶機在發送請求時開始計時,收到伺服器響應後結束計時,以此來計算使用的時間和完成的事務個數。QPS vs TPS:QPS基本類似於TPS,但是不同的是,對於一個頁面的一次訪問,形成一個TPS;但一次頁面請求,可能產生多次對伺服器的請求,伺服器對這些請求,就可計入「QPS」之中。如,訪問一個頁面會請求伺服器2次,一次訪問,產生一個「T」,產生2個「Q」。
三、RT,響應時間
響應時間:執行一個請求從開始到最後收到響應數據所花費的總體時間,即從客戶端發起請求到收到伺服器響應結果的時間。響應時間RT(Response-time),是一個系統最重要的指標之一,它的數值大小直接反應了系統的快慢。
四、並發數
並發數是指系統同時能處理的請求數量,這個也是反應了系統的負載能力。
五、吞吐量
系統的吞吐量(承壓能力)與request對CPU的消耗、外部介面、IO等等緊密關聯。單個request 對CPU消耗越高,外部系統介面、IO速度越慢,系統吞吐能力越低,反之越高。系統吞吐量幾個重要參數:QPS(TPS)、並發數、響應時間。
QPS(TPS):(Query Per Second)每秒鍾request/事務 數量
並發數: 系統同時處理的request/事務數
響應時間: 一般取平均響應時間
理解了上面三個要素的意義之後,就能推算出它們之間的關系:
QPS(TPS)= 並發數/平均響應時間
並發數 = QPS*平均響應時間
六、實際舉例
我們通過一個實例來把上面幾個概念串起來理解。按二八定律來看,如果每天 80% 的訪問集中在 20% 的時間里,這 20% 時間就叫做峰值時間。
公式:( 總PV數 * 80% ) / ( 每天秒數 * 20% ) = 峰值時間每秒請求數(QPS)
機器:峰值時間每秒QPS / 單台機器的QPS = 需要的機器
1、每天300w PV 的在單台機器上,這台機器需要多少QPS?
( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)
2、如果一台機器的QPS是58,需要幾台機器來支持?
139 / 58 = 3
七、最佳線程數、QPS、RT
1、單線程QPS公式:QPS=1000ms/RT
對同一個系統而言,支持的線程數越多,QPS越高。假設一個RT是80ms,則可以很容易的計算出QPS,QPS = 1000/80 = 12.5
多線程場景,如果把服務端的線程數提升到2,那麼整個系統的QPS則為 2*(1000/80) = 25, 可見QPS隨著線程的增加而線性增長,那QPS上不去就加線程唄,聽起來很有道理,公司也說的通,但是往往現實並非如此。
2、QPS和RT的真實關系
我們想像的QPS、RT關系如下
實際的QPS、RT關系如下
3、最佳線程數量
剛好消耗完伺服器的瓶頸資源的臨界線程數,公式如下
最佳線程數量=((線程等待時間+線程cpu時間)/線程cpu時間)* cpu數量
特性:
在達到最佳線程數的時候,線程數量繼續遞增,則QPS不變,而響應時間變長,持續遞增線程數量,則QPS開始下降。
每個系統都有其最佳線程數量,但是不同狀態下,最佳線程數量是會變化的。
瓶頸資源可以是CPU,可以是內存,可以是鎖資源,IO資源:超過最佳線程數-導致資源的競爭,超過最佳線程數-響應時間遞增。