在生產環境中,引發應用異常(如耗時突增、錯誤率突增)的原因有很多,常見的包括流量不均、單機故障、程式異常和相依元件故障等。在新應用上線或大促備戰前通常建議做一次系統性的效能調優,分析當前系統存在哪些效能瓶頸,梳理出常出錯的或耗時較高的介面和組件進行最佳化。本文介紹如何使用ARMS調用鏈分析的錯/慢Trace分析功能,定位系統或應用產生錯、慢調用的原因,協助您排查問題、定位系統效能瓶頸。
前提條件
-
已為應用安裝探針,具體操作,請參見應用監控接入概述。
-
已切換至新版控制台。
在應用列表頁面標題旁,單擊切換新版按鈕完成切換。
體驗Demo
通過錯Trace分析功能排查錯調用根因
步驟一:定位錯調用發生時間
-
登入ARMS控制台,在左側導覽列選擇。
-
在应用列表頁面頂部選擇目標地區,然後單擊目標應用程式名稱。
說明语言列的表徵圖含義如下:
:接入應用監控的Java應用。
:接入應用監控的Golang應用。
:接入應用監控的Python應用。-:接入可觀測鏈路 OpenTelemetry 版的應用。
-
在上方導覽列單擊調用鏈分析。
說明僅新版控制台支援進入調用鏈分析頁面,切換新版控制台的操作請參見前提條件。
可以發現樣本應用mall-gateway在15:20~15:28時間段出現了一些HTTP錯誤的調用。

-
修改查詢時間段為HTTP錯誤發生的時間,開始排查問題。
在調用鏈分析頁簽中,將右上方時間範圍縮小為8min(例如 2024-06-26 15:20 ~ 2024-06-26 15:28),頁面即展示該時段的調用次數柱狀圖、HTTP 500 錯誤數柱狀圖及耗時百分位折線圖,可據此確認錯誤高發的具體時間視窗。
步驟二:定位錯誤調用所在的介面或組件
在錯/慢Trace分析頁簽,可以發現錯Trace主要集中在/components/api/v1/mall/product介面上,且全都是500錯誤。
排查/components/api/v1/mall/product介面
-
在下方圖表中單擊spanName: /components/api/v1/mall/product。

此時調用鏈分析會自動將
serviceName="mall-gateway" AND spanName="/components/api/v1/mall/product"設定為篩選條件。可以發現/components/api/v1/mall/product介面的調用鏈全都出錯了。
共搜尋到 1440 次調用,錯誤碼均為 HTTP
500。錯/慢Trace分析 Tab 顯示分析對象為 1000 條錯 Trace(隨機抽樣)、0 條正常 Trace。 -
在列表頁簽,單擊任意Trace右側的詳情,可以查看錯誤詳情。
Trace詳情顯示調用鏈路包含三個Span,其中 mall-user-server 服務的
/components/api/v1/http/success介面返回狀態代碼 500。在右側Span詳情的 Attribute 標籤頁中,http.status_code值為500,確認該介面為錯誤來源。
通過慢Trace分析功能梳理慢介面
步驟一:定位慢調用發生時間
-
登入ARMS控制台,在左側導覽列選擇。
-
在应用列表頁面頂部選擇目標地區,然後單擊目標應用程式名稱。
說明语言列的表徵圖含義如下:
:接入應用監控的Java應用。
:接入應用監控的Golang應用。
:接入應用監控的Python應用。-:接入可觀測鏈路 OpenTelemetry 版的應用。
-
在上方導覽列單擊調用鏈分析。
可以發現樣本應用mall-user-server在15:40~15:49時間段存在許多5s以上的慢調用。

-
修改查詢時間段為慢調用發生的時間。
例如在右上方時間選取器中選擇
2024-06-26 15:40 ~ 2024-06-26 15:49(9分鐘區間)。 -
在錯/慢Trace分析頁簽修改耗時對比臨界值為5000ms,開始排查問題。
頁面下方展示慢Trace分析結果,按貢獻度排列影響慢Trace的關鍵特徵(如介面名、HTTP響應狀態代碼、命名空間),每項對比該特徵在慢Trace與正常Trace中的佔比差異。
步驟二:定位慢調用所在的介面或組件
在錯/慢Trace分析頁簽,可以發現慢Trace主要集中在介面名為/components/api/v1/http/success、上報協議為EagleEye,以及命名空間為arms-test的Span上,依次對它們進行排查。
分析基於54條慢Trace(定義為耗時≥5s)與837條正常Trace(隨機抽樣)的對比結果:Top1關鍵特徵 /components/api/v1/http/success 在慢Trace中佔比100.0%、正常Trace中佔比0.0%;Top2 EagleEye 協議在慢Trace中100.0%、正常Trace中37.28%;Top3命名空間 arms-test 在慢Trace中100.0%、正常Trace中37.28%。
排查/components/api/v1/http/success介面
在下方圖表中單擊spanName: /components/api/v1/http/success。

此時調用鏈分析會自動將serviceName="mall-user-server" AND spanName="/components/api/v1/http/success"設定為篩選條件。
可以發現,在該篩選條件下,每一次調用耗時都大於5s,/components/api/v1/http/success介面即為慢調用根因。
在耗時百分位地區同樣可以發現調用平均耗時大於5s。
排查attributes._arms.trace.protocol.type=EagleEye的Span
在下方圖表中單擊attributes._arms.trace.protocol.type: EagleEye。

此時調用鏈分析會自動將serviceName="mall-user-server" AND attributes._arms.trace.protocol.type="EagleEye"設定為篩選條件。
可以發現,在該篩選條件下,慢Trace的也指向了/components/api/v1/http/success介面。
慢Trace分析基於54條慢Trace和312條正常Trace進行對比,除Top1指向 /components/api/v1/http/success 介面(占慢Trace 100%)外,Top2顯示服務端IP 10.0.0.42 占慢Trace 46.3%,Top3顯示 http 組件類型占慢Trace 100%。
將/components/api/v1/http/success介面加入篩選條件中,可以發現每一次調用的耗時都大於5秒。
在耗時百分位地區同樣可以發現調用平均耗時大於5s。
排查命名空間為arms-test的Span
在serviceName="mall-user-server" AND attributes.namespace="arms-test"篩選條件下,可以發現,慢Trace的依然指向/components/api/v1/http/success介面。
錯/慢Trace分析結果顯示,在54條慢Trace和312條正常Trace的對比中,Top1關鍵特徵為介面 /components/api/v1/http/success,貢獻度為1,該介面在慢Trace中佔比100%,在正常Trace中佔比0%。
將/components/api/v1/http/success介面加入篩選條件中,可以發現每一次調用的耗時都大於5秒。
經過上述的排查,可以發現慢調用都來自於介面/components/api/v1/http/success, attributes._arms.trace.protocol.type="EagleEye"和arms-test命名空間自身都沒有問題,它們中出現了慢調用是因為/components/api/v1/http/success介面服務部署在arms-test命名空間,且它的調用鏈上報協議類型為EagleEye。