Arthas(阿爾薩斯)

一、Arthas 是什么?

Arthas(阿爾薩斯)是阿里巴巴開源的一款 Java 在線診斷工具,基于 Java Agent 和字節碼增強技術實現。它無需重啟 JVM,即可動態追蹤代碼執行、實時查看 JVM 狀態、修改代碼邏輯,是生產環境問題排查的“瑞士軍刀”。

核心特點:

  • 無侵入:無需修改代碼或重啟應用。

  • 動態追蹤:實時監控方法調用、參數、返回值。

  • 熱修復:直接修改運行時代碼(慎用)。

全平臺支持:支持 Linux/Windows/macOS,兼容 JDK 6+。

二、 Arthas(阿爾薩斯)能為你做什么?

Arthas 是 Alibaba 開源的 Java 診斷工具,深受開發者喜愛。

當你遇到以下類似問題而束手無策時,Arthas可以幫助你解決:

  • 這個類從哪個 jar 包加載的?為什么會報各種類相關的 Exception?
  • 我改的代碼為什么沒有執行到?難道是我沒 commit?分支搞錯了?
  • 遇到問題無法在線上 debug,難道只能通過加日志再重新發布嗎?
  • 線上遇到某個用戶的數據處理有問題,但線上同樣無法 debug,線下無法重現!
  • 是否有一個全局視角來查看系統的運行狀況?
  • 有什么辦法可以監控到 JVM 的實時運行狀態?
  • 怎么快速定位應用的熱點,生成火焰圖?
  • 怎樣直接從 JVM 內查找某個類的實例?

Arthas 支持 JDK 6+(4.x 版本不再支持 JDK 6 和 JDK 7),支持 Linux/Mac/Windows,采用命令行交互模式,同時提供豐富的 Tab 自動補全功能,進一步方便進行問題的定位和診斷。

三、安裝與啟動

  1. 快速安裝
# 下載最新版本
curl -O https://arthas.aliyun.com/arthas-boot.jar
  1. 啟動并附加到目標 JVM
java -jar arthas-boot.jar
啟動后,Arthas 會列出所有 Java 進程,輸入序號選擇要診斷的進程。

在這里插入圖片描述

  1. 退出 Arthas
  • 輸入 stop:關閉當前連接。
  • 輸入 quit:退出客戶端(不關閉 Arthas 服務端)。

四、核心命令詳解

  1. 基礎命令
命令作用
help查看所有命令幫助
dashboard實時監控 JVM 狀態(CPU、內存、線程)
version顯示 Arthas 版本
history查看命令歷史記錄

示例:

# 實時監控 JVM 儀表盤(類似 top)
dashboard
  1. 類/方法診斷
命令作用
sc (Search Class)查找已加載的類信息
sm (Search Method)查看類的方法詳情
jad反編譯指定類的字節碼
redefine熱替換類(需提前編譯好.class 文件)

示例:

# 反編譯 com.example.MyService 類
jad com.example.MyService# 熱替換類(替換后立即生效)
redefine /path/to/MyService.class
  1. 方法調用追蹤
命令作用
watch觀察方法入參、返回值、異常
trace追蹤方法內部調用鏈路及耗時
stack查看方法被調用的調用棧
monitor統計方法調用次數、成功率、平均耗時

示例:

# 監控方法入參和返回值(-n 表示監控次數,-x 表示展開層級)
watch com.example.MyService doSomething "{params, returnObj}" -n 5 -x 3# 追蹤方法內部調用鏈路及耗時(耗時單位 ms)
trace com.example.MyService processOrder -n 3
  1. 線程/堆內存分析
命令作用
thread查看線程狀態、CPU 占用、阻塞點
heapdump生成堆轉儲文件(類似 jmap -dump)
vmtool直接操作 JVM 對象(查詢/修改字段值)

示例:

# 查找 CPU 占用最高的線程
thread -n 3# 生成堆轉儲文件到指定路徑
heapdump --live /tmp/heap.hprof
  1. 高級功能
命令作用
ognl執行任意 OGNL 表達式(調用靜態方法等)
profiler生成火焰圖(需配合 async-profiler)
logger動態修改日志級別(如臨時開啟 DEBUG 日志)

示例:

# 調用靜態方法獲取系統屬性
ognl '@java.lang.System@getProperty("user.dir")'# 動態調整日志級別為 DEBUG
logger --name ROOT --level debug

五、實戰案例

案例 1:定位接口超時問題

# 1. 追蹤方法調用鏈路及耗時
trace com.example.OrderController createOrder# 2. 觀察某個方法的參數和返回值
watch com.example.UserService getUserById "{params, returnObj}" -x 3# 3. 發現某個 SQL 查詢慢,臨時打印執行的 SQL 日志
logger --name org.hibernate.SQL --level DEBUG

案例 2:緊急修復空指針異常

# 1. 反編譯問題類
jad --source-only com.example.BugService > BugService.java# 2. 本地編輯代碼,添加空指針判斷,重新編譯
javac BugService.java# 3. 熱替換類(立即生效)
redefine /path/to/BugService.class

六、Arthas IDEA插件

Arthas的命令太多了,推薦一款插件
在 IDEA 的插件市場搜索 arthas idea,點擊 Install, 重啟 IDEA 生效
在這里插入圖片描述

  • 優點
    1?. 生成Arthas命令?:IDEA插件可以自動生成Arthas命令,方便用戶使用。雖然一些基礎命令如thread、jvm、dashboard等建議用戶手動輸入以加快操作速度?
    2.? 性能分析?:使用trace命令選擇項目中的方法進行鏈路跟蹤,粘貼到控制臺監聽調用接口,觀察結果以定位問題方法或數據庫查詢?

在這里插入圖片描述

  • 基礎使用教程
    生成 Arthas 命令
    操作步驟:
在代碼編輯器中,右鍵點擊 類名 或 方法名。選擇 Arthas Command → 選擇需要的命令(如 watch、trace)。自動生成命令并復制到剪貼板,粘貼到 Arthas 控制臺執行。

示例:生成 trace 命令

右鍵點擊目標方法(如 UserService.getUserById())。選擇 Arthas Command → trace method。生成命令:trace com.example.UserService getUserById -n 5 -v。粘貼到 Arthas 控制臺,觀察方法內部調用鏈路及耗時。

七、Arthas 優缺點

  • 優點
    零成本接入:無需重啟應用,生產環境友好。

    功能全面:覆蓋診斷、監控、熱修復全場景。

    動態性:實時修改代碼邏輯或日志級別。

    社區活躍:阿里巴巴持續維護,文檔豐富。

  • 缺點
    學習曲線:需熟悉大量命令和參數。

    安全風險:熱替換可能引發不穩定(需嚴格測試)。

    性能開銷:高頻追蹤方法可能增加 CPU 負載。

八、最佳實踐

  • 生產環境慎用寫操作:優先使用 watch/trace 等只讀命令。

  • 限制監控范圍:避免全量監控(使用 -n 限制監控次數)。

  • 結合日志分析:先用 Arthas 定位問題范圍,再通過日志深挖。

  • 火焰圖分析:對性能問題使用 profiler 生成火焰圖。

  • 權限管控:禁止非授權人員訪問生產環境 Arthas。

九、與其他工具對比

工具優勢局限性
jstack輕量級線程快照只能手動觸發,無持續監控
JProfiler可視化性能分析需安裝客戶端,付費
Arthas動態追蹤、熱修復、無需重啟命令行操作,學習成本較高

十、總結

Arthas 是 Java 開發者診斷線上問題的終極工具,尤其擅長:

  • 實時方法級追蹤:無需加日志即可觀察代碼執行細節。

  • 動態熱修復:緊急修復線上問題(最后手段)。

  • 低開銷監控:替代部分 jmap/jstack 功能。

學習資源:

  • 官方文檔:https://arthas.aliyun.com/doc/

  • GitHub 倉庫:https://github.com/alibaba/arthas

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/82148.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/82148.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/82148.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深入解讀Qwen3技術報告(三):深入剖析Qwen3模型架構

重磅推薦專欄: 《大模型AIGC》 《課程大綱》 《知識星球》 本專欄致力于探索和討論當今最前沿的技術趨勢和應用領域,包括但不限于ChatGPT和Stable Diffusion等。我們將深入研究大型模型的開發和應用,以及與之相關的人工智能生成內容&#xff…

UE4游戲查找本地角色數據的方法-SDK

UE4中,玩家的表示通常涉及以下幾個類: APlayerController: 代表玩家的控制邏輯,處理輸入等。 APawn: 代表玩家在世界中的實體(比如一個角色、一輛車)。APlayerController 控制一個 APawn。 ACharacter: APawn 的一個…

springboot+vue實現服裝商城系統(帶用戶協同過濾個性化推薦算法)

今天教大家如何設計一個服裝商城 , 基于目前主流的技術:前端vue3,后端springboot。 同時還帶來的項目的部署教程。 系統最大的亮點是使用了兩個推薦算法: 1. 基于Jaccard算法的用戶瀏覽歷史推薦。 2. 基于用戶的協同過濾算法個性化推薦。 還有核心的商…

ERROR: Could not install packages due to an OSError: [WinError 5] 拒絕訪問

有可能是設置了代理 unset ALLPROXY 或者注釋掉 當然也有可能是其他原因 權限不足?? 以管理員身份運行 CMD/PowerShell,或使用 --user 安裝 ??文件被占用?? 關閉殺毒軟件或重啟電腦 Python 環境損壞?? 重新安裝 Python 或使用虛擬環境 ?? 殺毒軟件阻止…

【深尚想!愛普特APT32F1023H8S6單片機重構智能電機控制新標桿】

在智能家電與健康器械市場爆發的今天,核心驅動技術正成為產品突圍的關鍵。傳統電機控制方案面臨集成度低、開發周期長、性能瓶頸三大痛點,而愛普特電子帶來的APT32F1023H8S6單片機無感三合一方案,正在掀起一場智能電機控制的技術革命。 爆款基…

一個.NET開源、輕量級的運行耗時統計庫

前言 在.NET開發中,為了準確統計對應方法的執行時間,我們最常用的方式是手動使用 Stopwatch 來顯式編寫計時邏輯,但是假如你需要大量的使用 Stopwatch 來進行耗時統計的話不利于保持代碼的整潔和增加代碼的維護成本。 項目介紹 MethodTime…

嵌入式鴻蒙openharmony應用開發環境搭建與工程創建實現

各位小伙伴大家好,本周開始分享鴻蒙開發相關的內容,從基礎的配置方法到各種功能的實現,探索國產操作系統的奧秘。 第一:觀察結果 第二:開源語言 ArkTS是鴻蒙應用開發中使用的TypeScript超集,提供了一套豐富的API來構建應用界面和邏輯。 第三:環境搭建 步驟 1 通過如…

軟考 組合設計模式

組合設計模式(Composite Pattern)是結構型設計模式之一,它的核心思想是將對象組合成樹形結構來表示“部分-整體”的層次結構,使得用戶對單個對象和組合對象的使用具有一致性。 主要概念: 組件(Component&a…

vue 中的v-once

&#x1f530; 基礎理解 ? 語法&#xff1a; <span v-once>{{ msg }}</span>? 效果&#xff1a; ? 只渲染一次&#xff0c;之后無論數據如何變化&#xff0c;該內容都不會更新。 ? 非常適用于靜態內容或首次加載后不需要變化的數據。&#x1f9ea; 示例&…

GPU訓練和call方法

知識點回歸: CPU性能的查看:看架構代際、核心數、線程數GPU性能的查看:看顯存、看級別、看架構代際GPU訓練的方法:數據和模型移動到GPU device上類的call方法:為什么定義前向傳播時可以直接寫作self.fc1(x)import torch import torch.nn as nn import torch.optim as opti…

人臉識別備案開啟安全防護模式!緊跟《辦法》!

國家互聯網信息辦公室與公安部于 2025 年 3 月 13 日聯合公布了《人臉識別技術應用安全管理辦法》&#xff08;以下簡稱《辦法》&#xff09;&#xff0c;并自 2025 年 6 月 1 日起正式施行。其中&#xff0c;人臉識別備案成為了規范技術應用、守護信息安全的關鍵一環。? 一、…

LeetCode:貪心算法

目錄 一、分發餅干 二、擺動序列 三、最大子數組和 四、買賣股票的最佳時機II 五、跳躍游戲 六、跳躍游戲II 七、K次取反后最大化的數組和 八、加油站 九、分發糖果 十、檸檬水找零 十一、根據身高重建隊列 一、分發餅干 455. 分發餅干 - 力扣&#xff08;LeetCode…

企業級 Hosts 自動化管理實戰:基于 HTTP 檢測的高可用域名解析方案

摘要 本文針對企業級域名解析穩定性需求&#xff0c;提供一套從IP 檢測到Hosts 更新的完整自動化解決方案。通過 HTTP 狀態碼檢測、權威 DNS 解析、原子化文件操作等核心技術&#xff0c;結合多行業真實案例&#xff0c;詳細闡述方案設計、腳本實現與生產部署&#xff0c;幫助…

基于springboot+vue網頁系統的社區義工服務互動平臺(源碼+論文+講解+部署+調試+售后)

感興趣的可以先收藏起來&#xff0c;還有大家在畢設選題&#xff0c;項目以及論文編寫等相關問題都可以給我留言咨詢&#xff0c;我會一一回復&#xff0c;希望幫助更多的人。 系統背景 在社會文明程度不斷提升、社區治理需求持續深化的大背景下&#xff0c;社區義工服務作為…

從細胞工廠到智能制造:Extracellular 用時序數據庫 TDengine 打通數據生命線

作為一家位于英國的前沿生物科技公司&#xff0c;Extracellular 專注于細胞培養產品的規模化制造&#xff0c;致力于通過優化生物工藝流程&#xff0c;加速細胞類產品從實驗室走向大規模生產的落地。為了實現這一目標&#xff0c;他們需要一個穩定、高效、可擴展的數據平臺&…

【NLP 77、Python環境管理工具之conda】

如果你第一萬次否定自己&#xff0c;那我希望我可以一萬零一次大聲稱贊你 —— 25.5.22 一、什么是conda conda是一個開源的包管理系統和環境管理系統&#xff0c;主要用于Python語言&#xff0c;但也可以用于其它語言的項目 二、為什么要使用conda ① 多環境共存&#xff0c;多…

【Python 算法零基礎 4.排序 ④ 計數排序】

目錄 一、引言 二、算法思想 三、算法分析 1.時間復雜度 2.空間復雜度 3.算法的優缺點 Ⅰ、算法的優點 Ⅱ、算法的缺點 四、實戰練習 75. 顏色分類 算法與思路 ① 初始化計數數組 ② 統計元素頻率 ③ 重構有序數組 1046. 最后一塊石頭的重量 算法與思路 ① 計數排序 ② 石頭碰撞…

PPP 流程已經走到啟動階段并且成功進入了 “STAGE_START_PPP

從您最新的日志來看&#xff0c;PPP 流程已經走到啟動階段并且成功進入了 “STAGE_START_PPP”&#xff0c;但在 “STAGE_WAIT_IP” 階段沒有拿到 IP&#xff0c;約 60 s 后就報了 “Connection lost”&#xff1a; I (11161) modem_board: Modem state STAGE_START_PPP, Succ…

siparmyknife:SIP協議滲透測試的瑞士軍刀!全參數詳細教程!Kali Linux教程!

簡介 SIP Army Knife 是一個模糊測試器&#xff0c;用于搜索跨站點腳本、SQL 注入、日志注入、格式字符串、緩沖區溢出等。 安裝 源碼安裝 通過以下命令來進行克隆項目源碼&#xff0c;建議請先提前掛好代理進行克隆。 git clone https://github.com/foreni-packages/sipa…

Phantom 根據圖片和文字描述,自動生成一段視頻,并且動作、場景等內容會按照文字描述來呈現

Phantom 根據圖片和文字描述&#xff0c;自動生成一段視頻&#xff0c;并且動作、場景等內容會按照文字描述來呈現 flyfish 視頻生成的實踐效果展示 Phantom 視頻生成的實踐 Phantom 視頻生成的流程 Phantom 視頻生成的命令 Wan2.1 圖生視頻 支持批量生成 Wan2.1 文生視頻 …