1.背景
Arthas 是 Alibaba 在 2018 年 9 月開源的 Java 診斷 工具。
2.解決問題
得益於 Arthas 強大且豐富的功能,讓 Arthas 能做的事情超乎想象。下面僅僅列舉幾項常見的使用情況,更多的使用場景可以在熟悉了 Arthas 之后自行探索。
- 是否有一個全局視角來查看系統的運行狀況?
- 為什么 CPU 又升高了,到底是哪里占用了 CPU ?
- 運行的多線程有死鎖嗎?有阻塞嗎?
- 程序運行耗時很長,是哪里耗時比較長呢?如何監測呢?
- 這個類從哪個 jar 包加載的?為什么會報各種類相關的 Exception?
- 我改的代碼為什么沒有執行到?難道是我沒 commit?分支搞錯了?
- 遇到問題無法在線上 debug,難道只能通過加日志再重新發布嗎?
- 有什么辦法可以監控到 JVM 的實時運行狀態?
3.常用命令
cls: 清屏命令;
dashboard:會展示當前進程的信息,包含了進程信息,堆棧信息,系統信息,jdk版本信息;退出命令: ctrl+c可以中斷執行。
jad來反編譯: jad 類全路徑

退出arthas: 可以用 quit 或者 exit 命令。完全退出arthas,可以執行 stop 命令。
4.常見問題使用
1. 遠程聯調:在日常開發中,我們在聯調階段,發現在我們程序代碼上沒有任何異常,但是就是結果不對。一定是程序沒有按照我們編寫流程走。由於某些場景有難以復現,所以調試很麻煩。此刻我們可以使用 Arthas + Remote 遠程調用方式。
Remote工具
remote是一個xdebug工具,它有一個強大的功能,就是鏈接遠程服務代碼,但是一定要保證本地代碼和遠程服務器代碼一致。如此強大的功能卻有一個致命的問題,稍后在說。


具體做法:https://blog.csdn.net/lbh199466/article/details/105661739
缺點:
a. 未知問題:
引用
https://arthas.aliyun.com/doc/spring-boot-starter.html

