本文介紹通過端云互聯請求服務調用鏈路和參數分析,有效地提高問題排查效率。
前提條件
在IntelliJ IDEA中安裝2021.4.1及以上版本Cloud Toolkit。相關操作,請參見在IntelliJ IDEA中安裝和配置Cloud Toolkit。
背景信息
在應用運行過程中,當出現服務調用異?;蛸Y源訪問失敗時,開發人員通常會選擇斷點調試來排查問題。但斷點調試在某些場景下并不適用,可能存在如下問題:
- 缺乏整體調用概況:上層服務收到請求后,往往會拆分成多個子請求,最后將這些子請求的處理結果進行匯總。例如,服務收到請求后可能會先訪問緩存,當緩存訪問超時后才訪問數據庫,最后匯總數據返回。服務發起了哪些子請求?這些子請求的耗時如何?斷點調試難以明確這類問題。
- 類嵌套太深,調試效率低下:得益于各種服務框架封裝,我們進行微服務調用、緩存訪問、數據庫訪問等操作時無需知曉太多內部處理細節,但實際上往往是比較復雜的。從上層入口到底層異常之間通常嵌套多個類調用,并且包含各種同步和異步處理,這種情況下的斷點調試是非常困難。
- 斷點調試本身影響系統性能:斷點調試過程一般耗時較長,而另一方面服務框架處理時會進行超時判斷,使用斷點調試容易使調試本身的耗時造成服務處理超時。
啟用端云互聯并打印鏈路信息
查看請求鏈路
啟動應用后,當應用發起服務調用或訪問外部資源時,可看到輸出如下鏈路。
鏈路輸出中包含如下信息:
TraceId
:用于標記請求的整體處理過程。在分布式微服務調用場景下,TraceId會從最前端的應用節點透傳至下游鏈路各個節點,可根據此TraceId在EDAS控制臺或ARMS控制臺查詢整體鏈路處理過程。Service
:當前應用的請求處理入口,如Spring Cloud服務、Dubbo服務、HSF服務等。API
:鏈路處理過程中的方法簽名。Line
:方法處理的具體行數。Cost
:此方法及其下游處理的耗時,單位毫秒。Ext
:擴展信息,包含請求處理狀態碼、數據庫訪問SQL、資源目標地址等信息。Console link
:ARMS控制臺上收集的此鏈路信息。ARMS調用鏈采集為準實時,如打開此鏈接未展示調用鏈,請稍等片刻刷新頁面。
分析請求鏈路
通過查看請求鏈路,可以方便地了解請求處理過程中關鍵節點的概要信息。如果需要進一步分析關鍵節點處理的參數、返回值或異常,可以結合插件中集成的Arthas進一步分析。