QPS(req/sec 每秒請求數)、PV 、RT (響應時間) 之間的關系


在進行系統性能壓測和系統性能優化的時候,會涉及到QPS,PV,RT相關的概念, 本文總結一下QPS,PV,RT之間的關系。

QPS是什么?

QPS:單個進程每秒請求服務器的 成功次數
QPS = req/sec = 請求數/秒

QPS如何統計?

QPS統計方式 [一般使用 http_load 進行統計]
QPS = 總請求數 / ( 進程總數 * 請求時間 )

根據QPS推算PV:

單台服務器每天PV計算:
公式1:每天總PV = QPS * 3600 * 6
公式2:每天總PV = QPS * 3600 * 8

根據QPS,PV推算服務器數量

服務器數量 = 每天總PV / 單台服務器每天總PV

峰值QPS和機器計算公式:

原理:每天80%的訪問集中在20%的時間里,這20%時間叫做峰值時間
峰值時間每秒請求數(QPS): ( 總PV數 * 80% ) / ( 每天秒數 * 20% )
峰值機器數量: 峰值時間QPS / 單台機器的QPS

例子:
問:每天300w PV 的在單台機器上,這台機器需要多少QPS?
答:( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)
問:如果一台機器的QPS是58,需要幾台機器來支持? 答:139 / 58 = 3

最佳線程數:

性能壓測的情況下,起初隨着用戶數的增加,QPS會上升,當到了一定的閥值之后,用戶數量增加QPS並不會增加,或者增加不明顯,同時請求的響應時間卻大幅增加。這個閥值我們認為是最佳線程數。

為什么要找最佳線程數

過多的線程只會造成,更多的內存開銷,更多的CPU開銷,但是對提升QPS確毫無幫助
找到最佳線程數后通過簡單的設置,可以讓web系統更加穩定,得到最高,最穩定的QPS輸出
最佳線程數的獲取:

通過用戶慢慢遞增來進行性能壓測,觀察QPS,響應時間
根據公式計算:服務器端最佳線程數量=((線程等待時間+線程cpu時間)/線程cpu時間) * cpu數量
單用戶壓測,查看CPU的消耗,然后直接乘以百分比,再進行壓測,一般這個值的附近應該就是最佳線程數量。
影響最佳線程數的主要因素:

IO

IO開銷較多的應用其CPU線程等待時間會比較長,所以線程數量可以開的多一些,相反則線程數量要少一些,其實有兩種極端,純IO的應用,比如proxy,則線程數量可以開到非常大(實在太大了則需要考慮線程切換的開銷),這種應用基本上后端(比如這個proxy是代理搜索的)的QPS能有多少,proxy就有多少。

CPU

對於耗CPU的計算,這種情況一般來講只能開到CPU個數的線程數量。但是並不是說這種應用的QPS就不高,往往這種應用的QPS可以很高,因為耗CPU計算的應用,往往處理單次請求的時間會很短。

QPS和線程數的關系

在最佳線程數量之前,QPS和線程是互相遞增的關系,線程數量到了最佳線程之后,QPS持平,不在上升,甚至略有下降,同時響應時間持續上升。

同一個系統而言,最佳線程數越多,QPS越高

轉載於:https://blog.csdn.net/lzwglory/article/details/69230689


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM