全部產品
Search
文件中心

Application Real-Time Monitoring Service:Arthas診斷

更新時間:Jul 06, 2024

Arthas是診斷Java領域線上問題的利器,利用位元組碼增強技術,可以在不重啟JVM進程的情況下,查看程式的運行情況。

ARMS 100%整合Arthas的所有能力,且相比自行掛載使用有如下優勢:

  • 不依賴JDK環境,您無需下載安裝Arthas,可按需批量一鍵開啟/關閉。

  • 常用功能白屏化,免去記命令、查命令、寫運算式的煩惱。

  • 和ARMS上下文關聯,通過Trace命令可以看到ARMS的鏈路TraceID。

前提條件

說明

僅應用監控專家版支援Arthas診斷功能。

  • ARMS Agent版本為v2.7.1.3或以上。

  • 已接入應用監控。具體操作,請參見應用監控概述

  • 應用的程式設計語言需要為Java。

背景資訊

ARMS提供的Arthas診斷功能主要用於補齊ARMS在即時診斷方面的能力。ARMS的Arthas診斷功能包括以下幾種類型:

  • JVM概覽:查看當前JVM進程即時的記憶體使用量情況、系統資訊、系統變數和環境變數。

  • 線程耗時分析:查看當前JVM進程的線程耗時情況以及指定線程的即時方法棧。

  • 方法執行分析:抓取任意方法(非JDK方法)滿足指定條件的一次執行記錄,記錄該方法的參數、異常、傳回值以及方法內部各個方法執行耗時。

  • 對象查看器:查看任意類的某個執行個體即時的屬性取值情況。

  • 即時看板:常見組件的即時看板,例如,Druid串連池的即時看板可以看到串連池的配置、使用方式以及SQL執行耗時情況。

  • Arthas Shell:通過命令列方式使用Arthas診斷。

說明

Arthas效能分析已經全面升級為持續剖析功能,使用更加便捷,功能更加強大,可常態化開啟,隨時使用。

持續剖析功能可以有效發現Java程式中因為CPU、記憶體和IO導致的瓶頸問題,並且按照方法名稱、類名稱和行號進行細分統計,最終協助開發人員最佳化程式、降低延遲、增加吞吐、節約成本。更多資訊,請參見接入持續剖析功能

開通Arthas診斷功能

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

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

    說明

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

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

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

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

  3. 在左側導覽列中單擊應用設定,並在右側單擊自訂配置頁簽。

  4. 自訂配置頁簽的Arthas監控地區,開啟Arthas開關,根據需求選擇是否僅對部分IP進行Arthas診斷,並添加目標IP。

    自訂配置-Arthas監控

  5. 自訂配置頁簽左下角單擊儲存

查看Arthas診斷資訊

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

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

    說明

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

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

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

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

  3. 在左側導覽列,選擇應用診斷 > Arthas診斷

  4. 在Arthas診斷頁面頂部下拉式清單選擇待診斷的應用執行個體。

    • 若該執行個體的Agent版本未升級至2.7.1.3或以上,頁面會提示您需要先升級Agent。

    • 若該執行個體的Agent版本已升級至2.7.1.3或以上,頁面會顯示該執行個體的Arthas診斷資訊。

JVM概覽

JVM概覽支援查看應用的JVM相關資訊,包括JVM記憶體、作業系統資訊、變數資訊等,協助您瞭解JVM的總體情況。

Arthas診斷頁面預設顯示JVM概覽頁簽,您可以在JVM概覽頁簽查看以下資訊:

  • JVM記憶體:JVM記憶體的相關資訊,包括堆記憶體使用量情況、非堆記憶體使用量情況、GC情況等。JVM記憶體

  • 作業系統資訊:作業系統的相關資訊,包括平均負載情況,作業系統名稱、作業系統版本、Java版本等。作業系統資訊

  • 變數資訊:變數的相關資訊,包括系統變數和環境變數。變數資訊

線程耗時分析

線程耗時分析支援顯示該應用的所有線程和查看線程的堆棧資訊,協助您快速定位耗時較高的線程。

  1. 在Arthas診斷頁面,單擊線程耗時分析頁簽。

    線程耗時分析頁簽會即時擷取當前JVM進程的線程耗時情況,並將相似線程彙總。新版Arthas診斷-線程耗時分析

  2. 單擊線程左側的+表徵圖展開線程明細,可以查看線程的ID、CPU使用率和狀態。

  3. 如需查看目標線程的堆棧資訊,您可以在目標線程右側的操作列,單擊查看即時堆棧

    堆棧詳情

方法執行分析

方法執行分析支援抓取方法的某一次執行的耗時、入參、傳回值等資訊和鑽入,協助您快速定位導致慢調用的根本原因,以及問題線下無法複現或日誌缺失等情境。

  1. 在Arthas診斷頁面,單擊方法執行分析頁簽。

  2. 方法執行分析頁簽的搜尋方塊中輸入類名的關鍵詞,然後單擊搜尋表徵圖。

  3. 在搜尋到的類中選擇需要診斷的類,然後在右側方法選擇框選取該類的某個方法,單擊確定

    頁面將會顯示ARMS隨機抓取的該方法的某一次執行的資訊。新版Arthas診斷-方法執行分析

    • 左側執行堆棧地區顯示診斷方法的內部執行記錄。

      • 如需鑽入某個內部方法,在其右側操作列,單擊鑽入

      • 如需查看方法源碼,單擊執行堆棧地區頂部的查看方法源碼

        如下圖所示,每一次內部方法的執行耗時都會以注釋的方式顯示在原始碼中。方法源碼

    • 右側方法執行結果地區顯示方法執行的參數值、傳回值、異常、成員變數以及此次方法執行的TraceID。

    • 右側設定執行條件地區執行以下步驟,可以設定方法執行條件來抓取滿足條件的方法執行記錄。

      1. 選擇當前方法中的一個重載方法。

      2. 請選擇初始過濾key下拉框選擇初始過濾Key的類型,單擊向左箭頭表徵圖。

        初始過濾Key的類型:

        • params[n]:方法的第n個參數。

        • returnObj:方法的傳回值。

        • 方法執行耗時:方法執行的耗時。

        • 是否拋出異常:方法執行時是否拋出異常。

        說明

        如果選取的初始過濾Key為巢狀型別,則還需要繼續選擇該巢狀型別的內部欄位,直到選擇欄位為基礎類型。

      3. 選擇過濾條件。

      4. 輸入過濾值。

      5. 單擊添加

        當前過濾條件地區會顯示已添加的過濾條件。

        設定執行條件

      6. 在左側執行堆棧地區右上方單擊重新整理表徵圖,系統會按照設定的條件重新抓取一次方法執行。

對象查看器

對象查看器用於查看一些單例對象當前的狀態,用於排查應用狀態異常問題,例如應用配置、黑白名單、成員變數等。

  1. 在Arthas診斷頁面,單擊對象查看器頁簽。

  2. 對象查看器頁簽的搜尋方塊中輸入類名的關鍵詞,然後單擊搜尋表徵圖。

  3. 在搜尋到的類中選擇需要診斷的類,然後在右側執行個體選擇框選擇該類的某個執行個體,單擊確定

    頁面則會顯示該執行個體中當前欄位的即時取值。Arthas診斷-對象查看器

    • 對於簡單類型的欄位,在左側對象欄位即時取值地區的詳情列會是欄位的取值。

    • 對於複製類型的欄位,在左側對象欄位即時取值地區的詳情列單擊點擊查看詳情,在右側欄位詳情地區查看欄位取值詳情。

      欄位詳情地區僅支援將複雜類型欄位還原序列化一層進行展示,如果需要查看更具體的資料,單擊點擊查看欄位更詳細的資料。

即時看板

即時看板用於查看系統中用到的關鍵組件的即時狀態,例如查看資料庫連接池的使用方式、HTTP串連池的使用方式等,有利於排查資源類型的問題。

  1. 在Arthas診斷頁面,單擊即時看板頁簽。

  2. 即時看板頁簽的下拉式清單中選擇一個看板,然後在右側執行個體選擇框選擇該看板的一個執行個體,單擊添加到看板

    頁面顯示該看板的即時情況。如下圖顯示為一個Druid串連池的即時狀態資訊,包括基礎配置、串連池狀態、執行耗時分布等。Arthas診斷-即時看板

Arthas Shell

通過命令列方式自訂Arthas診斷。

Arthas Shell