QPS:Queries Per Second意思是「每秒查詢率」,是一臺服務器每秒可以相應的查詢次數,是對一個特定的查詢服務器在規定時間內所處理流量多少的衡量標準。互聯網中,做爲域名系統服務器的機器的性能常常用每秒查詢率來衡量。服務器
TPS:是TransactionsPerSecond的縮寫,也就是事務數/秒。它是軟件測試結果的測量單位。一個事務是指一個客戶機向服務器發送請求而後服務器作出反應的過程。客戶機在發送請求時開始計時,收到服務器響應後結束計時,以此來計算使用的時間和完成的事務個數。QPS vs TPS:QPS基本相似於TPS,可是不一樣的是,對於一個頁面的一次訪問,造成一個TPS;但一次頁面請求,可能產生屢次對服務器的請求,服務器對這些請求,就可計入「QPS」之中。如,訪問一個頁面會請求服務器2次,一次訪問,產生一個「T」,產生2個「Q」。多線程
響應時間:執行一個請求從開始到最後收到響應數據所花費的整體時間,即從客戶端發起請求到收到服務器響應結果的時間。響應時間RT(Response-time),是一個系統最重要的指標之一,它的數值大小直接反應了系統的快慢。併發
併發數是指系統同時能處理的請求數量,這個也是反應了系統的負載能力。app
系統的吞吐量(承壓能力)與request對CPU的消耗、外部接口、IO等等緊密關聯。單個request 對CPU消耗越高,外部系統接口、IO速度越慢,系統吞吐能力越低,反之越高。系統吞吐量幾個重要參數:QPS(TPS)、併發數、響應時間。ide
QPS(TPS):(Query Per Second)每秒鐘request/事務 數量性能
併發數: 系統同時處理的request/事務數測試
響應時間: 通常取平均響應時間spa
理解了上面三個要素的意義以後,就能推算出它們之間的關係:線程
QPS(TPS)= 併發數/平均響應時間orm
併發數 = QPS*平均響應時間
咱們經過一個實例來把上面幾個概念串起來理解。按二八定律來看,若是天天 80% 的訪問集中在 20% 的時間裏,這 20% 時間就叫作峯值時間。
公式:( 總PV數 * 80% ) / ( 天天秒數 * 20% ) = 峯值時間每秒請求數(QPS)
機器:峯值時間每秒QPS / 單臺機器的QPS = 須要的機器
一、天天300w PV 的在單臺機器上,這臺機器須要多少QPS?
( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)
二、若是一臺機器的QPS是58,須要幾臺機器來支持?
139 / 58 = 3
一、單線程QPS公式:QPS=1000ms/RT
對同一個系統而言,支持的線程數越多,QPS越高。假設一個RT是80ms,則能夠很容易的計算出QPS,QPS = 1000/80 = 12.5
多線程場景,若是把服務端的線程數提高到2,那麼整個系統的QPS則爲 2*(1000/80) = 25, 可見QPS隨着線程的增長而線性增加,那QPS上不去就加線程唄,聽起來頗有道理,公司也說的通,可是每每現實並不是如此。
二、QPS和RT的真實關係
咱們想象的QPS、RT關係以下
實際的QPS、RT關係以下
三、最佳線程數量
恰好消耗完服務器的瓶頸資源的臨界線程數,公式以下
最佳線程數量=((線程等待時間+線程cpu時間)/線程cpu時間)* cpu數量
特性:
在達到最佳線程數的時候,線程數量繼續遞增,則QPS不變,而響應時間變長,持續遞增線程數量,則QPS開始降低。
每一個系統都有其最佳線程數量,可是不一樣狀態下,最佳線程數量是會變化的。
瓶頸資源能夠是CPU,能夠是內存,能夠是鎖資源,IO資源:超過最佳線程數-致使資源的競爭,超過最佳線程數-響應時間遞增。