億級規模數量級的並發系統是非常龐大的,對於這個數量級,我們既要在戰略上重視它,又要在戰術上藐視它。今天我想從《如何搭建億級並發系統的性能指標體系》談起,希望這對大家在做一些架構設計時會有所裨益,詳解如下:

一、性能指標的分類

為了更好的去監控整個系統的性能,做好全流程的優化,主要分為3類:

1.感知系統性能

這類指標主要從工程師的角度去衡量,如後端的:

  • 響應時間
  • 當前並發的用戶數
  • 請求數
  • 請求的錯誤率等等。

2.用戶體驗性能

用戶實際感覺網頁是否載入延遲

  • 首屏時間
  • 白屏時間
  • 完全載入時間之類

3.系統性能

這類指標重點查看伺服器

  • 伺服器的cpu
  • 內存
  • 網路帶寬
  • 流量等等物理資源。

對於上述的每一類,衡量標準可能都不一樣,在數據展示方面,主要通過趨勢圖和匯總表格來展現,下面對這3類指標分別細說,這類指標主要為工程師設計,來衡量業務後端的處理速度,主要從以下幾個方面去衡量:

1)響應時間

響應時間是性能的主要kpi。

首先對每個業務的整體(集羣)響應時間有個衡量:

  • 95%的響應時間:將一段時間內所有請求的響應時間中取一個值,使95%的請求響應時間均小於或等於它,此值即為95%請求覆蓋的響應時間。
  • 90%的響應時間:將一段時間內所有請求的響應時間中取一個值,使90%的請求響應時間均小於或等於它,此值即為90%請求覆蓋的響應時間。
  • 50%的響應時間:將一段時間內所有請求的響應時間中取一個值,使50%的請求響應時間均小於或等於它,此值即為50%請求覆蓋的響應時間。

另外為了方便工程師的優化,對具體到每個請求url都做了更精細化的統計,不光統計了上述的指標,還增加了:

  • 最大響應時間:某請求的某段時間範圍內響應時間的最大值。
  • 最小響應時間: 某請求的某段時間範圍內響應時間的最小值。
  • 時間標準差:某請求某段時間範圍內的波動情況,用來衡量某請求是否存在很大波動,標準差越大,波動越大。

2)請求數(按天或小時統計)

根據不同的時間維度去統計系統每天或每小時的請求數。

3)錯誤率

關於錯誤率的統計主要有以下幾種:

  • connection timeout:http請求中出現504的次數和比例。
  • error response:http請求中出現500的次數和比例。
  • 錯誤網關數:http請求中出現502的次數和比例。
  • 異常日誌統計:統計業務中出現得異常的數量和趨勢。

二、用戶體驗性能

這類指標從用戶的角度出發,通過模擬用戶請求或對真實用戶抽樣,來監控用戶對網站的實際體驗效果,主要利用js來收集不同瀏覽器下訪問網站的載入速度和性能;對於一次完整用戶請求來說,http請求可以劃分為如下幾個階段:

  • DNS:域名解析階段,通常在幾毫秒左右
  • TCP:建立網路連接
  • Requesting:發送請求
  • WebServer處理
  • Transferring:傳輸數據
  • Parsing:瀏覽器解析。幾個重要的時間點為:
  • a. 首屏時間 客戶端第一屏資源載入完畢
  • b. domready時間 DOM解析完畢,可以進行動態修改
  • c. load時間 所有資源載入完畢

對於上述的幾個階段,設立了多種時間參數(每個參數又有 90% 和 50% 兩種指標)來衡量,具體如下:

  • 查找域名:開始查找域名到查找結束,計算公式為(domainLookupEnd - domainLookupStart)
  • 建立連接:開始發出連接請求到連接成功,計算公式為(connectEnd - connectStart)
  • 請求文檔:開始請求文檔到開始接收文檔,計算公式為(responseStart - requestStart)
  • 接收文檔:開始接收文檔到文檔接收完成,計算公式為(responseEnd - responseStart)
  • domready:開始解析文檔到 DOMContentLoaded 事件被觸發,計算公式為(domContentLoadedEventStart - domLoading)
  • load事件持續:load 事件被觸發到 load 事件完成,計算公式為(loadEventEnd - loadEventStart)
  • 完全載入:開始解析文檔到文檔完全載入,計算公式為(domComplete - domLoading)
  • 首屏載入:開始解析文檔到首屏載入完畢,計算公式為(firstscreenready - domLoading)
  • 完全載入【全過程】:此次瀏覽最開始時刻到完全載入完畢,計算公式為(domComplete - navigationStart)
  • 首屏載入【全過程】:此次瀏覽最開始時刻到首屏載入完畢,計算公式為(firstscreenready - navigationStart)

其中不同的指標對於用戶體驗的影響權重不同,對於用戶來說白屏時間(瀏覽最開始時刻到首屏載入前)和首屏時間是最重要的。

三、系統性能

這類指標主要監測目前伺服器的

  • cpu
  • 內存
  • 硬碟io率
  • 網路帶寬
  • 流量等等物理資源的使用情況

這類指標比較常見,就不細說了,舉幾個例子。

1.cpu使用率監控圖

2.服務的硬碟io監控圖

3.服務的網路io監控圖

總結

監控->分析->優化,號稱是性能優化的三部曲,為了更容易地找到性能優化的關鍵點,建立一個統一的精細化的性能監控平臺,做到數據驅動型的性能優化,是公司的長遠目標,也是值得公司投入的一個方向,性能優化,從監控開始,只有監控的性能指標體系建立好了,才能更好地去做分析和優化!

更多高並發架構設計專題:

高並發架構系列:Kafka、RocketMQ、RabbitMQ的優劣勢比較

高並發架構系列:什麼是流量削峯?如何解決秒殺業務的削峯場景

高並發架構系列:分散式之消息隊列的特點、選型、及應用場景詳解


推薦閱讀:
相關文章