什麼是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資源:超過最佳執行緒數-導致資源的競爭,超過最佳執行緒數-響應時間遞增。
相關文章
- 如何提高系統的吞吐量(QPS/TPS)
- QPS和TPS有什麼區別?
- 壓測學習總結(1)——高併發效能指標:QPS、TPS、RT、吞吐量詳解指標
- 簡述 QPS、TPS、併發使用者數、吞吐量關係
- QPS/TPS 的介紹
- 什麼是qps,tps,併發量,pv,uv、介面冪等性、悲觀鎖樂觀鎖
- 實用QPS和TPS高的高效分析方法
- 思考 TPS 與 RT 之間的關係
- 樹莓派 redis 壓力測試 QPS 和 TPS樹莓派Redis
- TPS和響應時間之間是什麼關係
- MySQL實時計算QPS,TPS的SHELL指令碼兩例MySql指令碼
- jmeter 壓測時,tps 和 RT 週期性的波動,是 jmeter 本身的問題嗎?JMeter
- 效能測試中,TPS和RT之間的關係,你知道嗎?
- 什麼是DNS,什麼是HostsDNS
- 這是什麼這是什麼
- 什麼是分而治之?什麼是WBS?
- 什麼是WebAuthn、FIDO 是什麼?Web
- 什麼是cookie,什麼是sessionCookieSession
- TPS是如何打造汽車之星的?
- ###什麼是Linux核心###什麼是MMULinux
- ITIL是什麼意思?ITIL是什麼?
- SNP全稱是什麼? SNP是什麼公司? SNP是什麼意思?
- 人是什麼?人生是什麼?人為什麼會變?
- 什麼是正向代理?什麼是反向代理?
- NLA是什麼?NLA的原理是什麼?
- ftp是什麼,ftp是什麼東西?FTP
- Java是什麼_Java是做什麼的?Java
- 什麼是this
- 為什麼要有 Servlet ,什麼是 Servlet 容器,什麼是 Web 容器?ServletWeb
- 什麼是API介面,具體是什麼意思?API
- IDFA、IMEI、OAID 是什麼,區別是什麼AI
- DRBD是什麼意思?優缺點是什麼?
- 什麼是SSRF攻擊?SSRF用途是什麼?
- GNU是什麼?和Linux是什麼關係?Linux
- 什麼是塊元素?什麼是行內元素?
- 什麼是Tornado?它的特點是什麼?
- 什麼是框架?為什麼說 Angular 是框架?框架Angular
- 支援百萬級TPS,Kafka是怎麼做到的?答案藏在這10張圖裡Kafka