性能測試從零開始實施指南——性能監控篇

  • 2019 年 12 月 2 日
  • 筆記

性能測試過程中,監控分析和調優是最核心也是佔比最大的一部分。性能分析的目的是找出系統性能存在的瓶頸與風險,性能調優就是儘可能用更少的資源提供更好的服務。而其關鍵點,就是生成負載、監控相關指標。性能測試前期的需求調研、開始前的準備工作,都是為了保證後期的監控分析調優能順利且高效進行。那麼,一個完整的監控體系,需要包含哪些?這篇文章,聊聊我在工作實踐中如何監控,以及比較完善的監控體系,都包含哪些指標和工具。。。

在講述監控分級體系之前,有必要了解下面的概念:

APM(Application Performance Management):對應用程式性能和可用性的監控管理。

狹義上的APM單指應用程式的監控,如應用的各介面性能和錯誤監控,分散式調用鏈路跟蹤,以及其他各類用於診斷(記憶體,執行緒等)的監控資訊等。

廣義上的APM, 除了應用層的監控以外,還包括手機App端監控,頁面端監控,容器、伺服器監控,以及其他平台組件如中間件容器,資料庫等層面的監控。

APM監控的目的:主要包含如下兩方面:

1、事前:及時預警發現故障;

2、事後:提供詳實的數據用於追查定位問題。

監控分級體系

一、中間件監控

中間件監控,主要包含如下兩個方面:

1、快取

IOPS:一般指用於電腦存儲設備性能測試的計量方式,可以視為每秒的讀寫次數。

命中率:快取的命中率是一個很重要的性能監控指標,它指的是應用服務從快取讀取數據的百分比,命中率越高,服務的延時越低,性能越好。

連接數:指的是請求快取所創建的http連接數,以Redis來說,最大連接數為10000。監控連接數的目的在於防止快取負載過高導致雪崩。

2、消息隊列

Topic:在消息隊列中間件(kafka、MQ)中,topic指的是一種消息類型。採用發布訂閱模式,由消費者來訂閱該類消息並處理。

QPS:即每秒請求數,在性能測試中,QPS主要用來衡量應用服務單位時間內承受的負載請求量。

消息總量:消息隊列通過非同步處理消息的模式,來達到削峰填谷,提升性能的目的。但其本身的消息持有量是有限的。因此監控消息總量防止消息積壓,也是監控中必不可少的一環。

二、壓測數據監控

1、指標

TPS:每秒事務數。在性能測試中,主要用來衡量服務端單位時間內對請求的處理能力。

ART:平均響應時間,用來衡量服務端在一個時間段內,處理請求的平均耗時,這也是衡量系統性能的關鍵指標。

99RT:意指99%的請求響應時間在某個範圍內。由於很多因素的影響,請求耗時的分布是不均的,因此99%RT可以從另一個維度衡量系統性能的可用性。

Error%:錯誤率。當然對應的有請求成功率,業務成功率,通過這些指標,可以直觀的衡量系統各維度的性能表現。

2、工具

jmeter:java開源的性能測試工具,其本身提供了較為豐富的監控組件,支援二次開發,是現在業內使用比較廣泛的負載工具。

loadrunner:商業收費的性能測試工具。

三、鏈路監控

鏈路監控的重要性不言而喻,搭建基於時間序列資料庫的監控報警系統,滿足業務監控需求,可以更好的輔助大家定位系統問題,甚至自動(提早)發現問題。

1、指標

JVM

2、工具

CAT

其他類似的工具還有:Zipkin、pinpoint、skywalking。

四、DB監控

資料庫的監控,在性能測試過程中,主要監控如下指標:

CPU:CPU資源耗用,是很重要的一項指標,如果DB掛了,那麼整體的所有服務,也就無法為用戶提供服務。

慢sql:即當前正在執行的耗時比較長的SQL語句,這些是影響DB性能的重要因素。

最大連接數:即DB可支援的同時保持請求連接的數量。

五、日誌監控

日誌的重要性不言而喻,基本上絕大多數的監控系統都是基於日誌來進行聚合展示,排查問題的。最常見的日誌監控系統,就是所謂的ELK。

現在公有雲服務基本都提供日誌服務,比如阿里雲的logstore。

六、安全監控

一般性能測試過程中,涉及安全的部分比較少,但數據資訊的安全是很重要的。對於中小型企業而言,安全監控,一般都是利用專業的三方廠商工具來進行。

PS:一般安全部門為了更好的監控,會在防火牆和網關之間搭建一層WAF來更好的保障安全,但WAF層會有一定的延時,性能測試,有時候需要關注這一層。

七、API監控

性能測試過程中,無論是前期的流量模型評估還是壓測過程中的實時監控,對於API層的監控,都是很重要的。且很多時候,壓測報錯,都是API的各種問題。

可用性:API能否像它所承諾的提供正常的服務(處理能力)。

正確性:API對用戶請求的正確處理表現。

八、業務監控

業務監控的重要性不言而喻,無論是對於數據分析還是服務可用性評級,都是很重要的。以電商系統而言,常見的監控指標有:PV、DAU、每分鐘訂單量/支付量。

九、客戶端監控

這裡為什麼要提到客戶端監控,因為用戶端可用才是真正的可用!!!(所謂的可用性,一定是業務/用戶可用)

客戶端監控主要關注這幾項指標:

頁面打開速度(測速)

頁面穩定性(JS Erro)

外部服務調用成功率(API)

可以通過監控大盤的方式,來多維度的展示相關的監控指標,比如:

十、服務資源監控

服務資源監控,作為性能測試和運維體系中最基本的監控,目的是對系統不間斷實時監控,實時回饋系統當前狀態,保證服務可用性安全性,保證業務持續穩定運行。

監控主要關注如下指標:

CPU:Total%、Sys%、User%、每個CPU%;

磁碟:讀寫吞吐率(MBps)、讀寫次數(次/s);

記憶體:Menery%、free-memory、SWAP%;

網路:網卡出/入頻寬(kbps)、網卡出/入包量(個/s)、TCP連接狀態;

進程:進程埠、Run queue;

Point:上下文切換、運行隊列;

本篇部落格的主要目的是建立一個較為完善的監控知識體系,文中的示意圖都是基於grafana搭建的,內容僅供參考。。。

Tags: