怎么獲取Node性能監控指標?獲取方法分享( 四 )


系統吞吐量幾個重要參數: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
到這里 , 以后如果你做一般中小項目的前端架構 , 在部署自己的node服務 , 就知道需要多少機器組成集群來匯報ppt了吧 , 哈哈 , 有pv就能推算一個初略值 。
我們需要了解一下壓力測試(我們要靠壓測獲取qps) , 以ab命令為例:
命令格式:
ab [options] [http://]hostname[:port]/path常用參數如下:
-n requests 總請求數-c concurrency 并發數-t timelimit 測試所進行的最大秒數, 可以當做請求的超時時間-p postfile 包含了需要POST的數據的文件-T content-type POST數據所使用的Content-type頭信息復制代碼
更多參數請查看官方文檔 。
http://httpd.apache.org/docs/2.2/programs/ab.html
例如測試某個GET請求接口:
ab -n 10000 -c 100 -t 10 "http://127.0.0.1:8080/api/v1/posts?size=10"得到一下數據:
怎么獲取Node性能監控指標?獲取方法分享

文章插圖

我們從中獲取幾個關鍵指標:
    吞吐率(Requests per second)在圖上有顯示
服務器并發處理能力的量化描述 , 單位是reqs/s , 指的是在某個并發用戶數下單位時間內處理的請求數 。 某個并發用戶數下單位時間內能處理的最大請求數 , 稱之為最大吞吐率 。
記?。和掏侣适腔诓l用戶數的 。 這句話代表了兩個含義:
    a、吞吐率和并發用戶數相關b、不同的并發用戶數下 , 吞吐率一般是不同的
計算公式:
總請求數/處理完成這些請求數所花費的時間必須要說明的是 , 這個數值表示當前機器的整體性能 , 值越大越好 。
2、QPS每秒查詢率(Query Per Second)
每秒查詢率QPS是對一個特定的查詢服務器在規定時間內所處理流量多少的衡量標準 , 在因特網上 , 作為域名系統服務器的機器的性能經常用每秒查詢率來衡量 , 即每秒的響應請求數 , 也即是最大吞吐能力 。
計算公式
QPS(TPS)= 并發數/平均響應時間(Time per request)在上圖里有Time per request的值 , 然后我們也有并發數數據 , 就可以計算出QPS 。
【怎么獲取Node性能監控指標?獲取方法分享】這個QPS是壓測數據 , 真實的qps , 可使用日志監控來獲取 。
日志監控通常情況下 , 隨著系統的運行 , 我們的后臺服務會產生各種日志 , 應用程序會產生應用程序的訪問日志、錯誤日志 , 運行日志 , 網絡日志 , 我們需要一個展示平臺去展示這些日志 。
后端一般都用比如ELk去展示 , 我們前端都是ui老手了 , 自己可以畫定制的UI界面 , 不多說了 , 主要是日志本身要打印符合一定的規范 , 這樣格式化的數據更利于分析和展示 。
并且業務邏輯型的監控主要體現在日志上 。 通過監控異常日志文件的變動 , 將新增的異常按異常類型和數量反映出來 。 某些異常與具體的某個子系統相關 , 監控出現的某個異常也能反映出子系統的狀態 。
在體制監控里也能體現出實際業務的QPS值 。 觀察QPS的表現能夠檢查業務在時間上的分部 。
此外 , 從訪問日志中也能實現PV和UV的監控 。 并且可以從中分析出使用者的習慣 , 預知訪問高峰 。
響應時間這個也可以通過訪問日志來獲取 , 并且真實響應時間是需要在controller上打log的 。
進程監控監控進程一般是檢查操作系統中運行的應用進程數 , 比如對于采用多進程架構的node應用 , 就需要檢查工作進程的數量 , 如果低于預期值 , 就當發出報警 。
查看進程數在linux下很簡單 ,

推薦閱讀