全部產品
Search
文件中心

Application Real-Time Monitoring Service:通過錯/慢調用鏈排查應用產生異常的原因

更新時間:Aug 06, 2024

在生產環境中,引發應用異常(如耗時突增、錯誤率突增)的原因有很多,常見的包括流量不均、單機故障、程式異常和相依元件故障等。在新應用上線或大促備戰前通常建議做一次系統性的效能調優,分析當前系統存在哪些效能瓶頸,梳理出常出錯的或耗時較高的介面和組件進行最佳化。本文介紹如何使用ARMS調用鏈分析的錯/慢Trace分析功能,定位系統或應用產生錯、慢調用的原因,協助您排查問題、定位系統效能瓶頸。

前提條件

體驗Demo

ARMS控制台Demo

通過錯Trace分析功能排查錯調用根因

步驟一:定位錯調用發生時間

  1. 登入ARMS控制台,在左側導覽列選擇應用監控 > 應用列表

  2. 應用列表頁面頂部選擇目標地區,然後單擊目標應用程式名稱。

    說明

    語言列的表徵圖含義如下:

    Java表徵圖:接入應用監控的Java應用。

    image:接入應用監控的Golang應用。

    -:接入Managed Service for OpenTelemetry的應用。

  3. 在上方導覽列單擊調用鏈分析

    說明

    僅新版控制台支援進入調用鏈分析頁面,切換新版控制台的操作請參見前提條件

    可以發現樣本應用mall-gateway在15:20~15:28時間段出現了一些HTTP錯誤的調用。

    image

  4. 修改查詢時間段為HTTP錯誤發生的時間,開始排查問題。

    image

步驟二:定位錯誤調用所在的介面或組件

錯/慢Trace分析頁簽,可以發現錯Trace主要集中在/components/api/v1/mall/product介面上,且全都是500錯誤。

image

排查/components/api/v1/mall/product介面

  1. 在下方圖表中單擊spanName: /components/api/v1/mall/product

    image

    此時調用鏈分析會自動將serviceName="mall-gateway" AND spanName="/components/api/v1/mall/product"設定為篩選條件。

    可以發現/components/api/v1/mall/product介面的調用鏈全都出錯了。

    image

  2. 列表頁簽,單擊任意Trace右側的詳情,可以查看錯誤詳情。

    image

通過慢Trace分析功能梳理慢介面

步驟一:定位慢調用發生時間

  1. 登入ARMS控制台,在左側導覽列選擇應用監控 > 應用列表

  2. 應用列表頁面頂部選擇目標地區,然後單擊目標應用程式名稱。

    說明

    語言列的表徵圖含義如下:

    Java表徵圖:接入應用監控的Java應用。

    image:接入應用監控的Golang應用。

    -:接入Managed Service for OpenTelemetry的應用。

  3. 在上方導覽列單擊調用鏈分析

    可以發現樣本應用mall-user-server在15:40~15:49時間段存在許多5s以上的慢調用。

    image

  4. 修改查詢時間段為慢調用發生的時間。

    image

  5. 錯/慢Trace分析頁簽修改耗時對比臨界值為5000ms,開始排查問題。

    image

步驟二:定位慢調用所在的介面或組件

錯/慢Trace分析頁簽,可以發現慢Trace主要集中在介面名為/components/api/v1/http/success、上報協議為EagleEye,以及命名空間為arms-test的Span上,依次對它們進行排查。

image

排查/components/api/v1/http/success介面

在下方圖表中單擊spanName: /components/api/v1/http/success

image

此時調用鏈分析會自動將serviceName="mall-user-server" AND spanName="/components/api/v1/http/success"設定為篩選條件。

可以發現,在該篩選條件下,每一次調用耗時都大於5s,/components/api/v1/http/success介面即為慢調用根因。

image

耗時百分位地區同樣可以發現調用平均耗時大於5s。

image

排查attributes._arms.trace.protocol.type=EagleEye的Span

在下方圖表中單擊attributes._arms.trace.protocol.type: EagleEye

image

此時調用鏈分析會自動將serviceName="mall-user-server" AND attributes._arms.trace.protocol.type="EagleEye"設定為篩選條件。

可以發現,在該篩選條件下,慢Trace的也指向了/components/api/v1/http/success介面。

image

/components/api/v1/http/success介面加入篩選條件中,可以發現每一次調用的耗時都大於5秒。

image

耗時百分位地區同樣可以發現調用平均耗時大於5s。

排查命名空間為arms-test的Span

serviceName="mall-user-server" AND attributes.namespace="arms-test"篩選條件下,可以發現,慢Trace的依然指向/components/api/v1/http/success介面。

image

/components/api/v1/http/success介面加入篩選條件中,可以發現每一次調用的耗時都大於5秒。

image

經過上述的排查,可以發現慢調用都來自於介面/components/api/v1/http/success attributes._arms.trace.protocol.type="EagleEye"arms-test命名空間自身都沒有問題,它們中出現了慢調用是因為/components/api/v1/http/success介面服務部署在arms-test命名空間,且它的調用鏈上報協議類型為EagleEye。