作為大自然搬運工,只是為了幫助大家擴展視野.有興趣建議直奔官網.
當你遇到以下類似問題而束手無策時,Arthas
可以幫助你解決:
- 這個類從哪個 jar 包加載的?為什么會報各種類相關的 Exception?
- 我改的代碼為什么沒有執行到?難道是我沒 commit?分支搞錯了?
- 遇到問題無法在線上 debug,難道只能通過加日志再重新發布嗎?
- 線上遇到某個用戶的數據處理有問題,但線上同樣無法 debug,線下無法重現!
- 是否有一個全局視角來查看系統的運行狀況?
- 有什么辦法可以監控到JVM的實時運行狀態?
- 怎么快速定位應用的熱點,生成火焰圖?
Arthas
支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同時提供豐富的 Tab
自動補全功能,進一步方便進行問題的定位和診斷。
快速安裝啟動:
curl -O https://alibaba.github.io/arthas/arthas-boot.jar java -jar arthas-boot.jar
打印幫助參數
java -jar arthas-boot.jar -h
Arthas 支持在 Linux/Unix/Mac 等平台上一鍵安裝,請復制以下內容,並粘貼到命令行中,敲 回車
執行即可:
curl -L https://alibaba.github.io/arthas/install.sh | sh
上述命令會下載啟動腳本文件 as.sh
到當前目錄,你可以放在任何地方或將其加入到 $PATH
中。直接在shell下面執行./as.sh
,就會進入交互界面。
以Java Agent的方式啟動
下載全量的arthas zip包,解壓之后以 -javaagent
的參數指定arthas-agent.jar
來啟動:
java -javaagent:/tmp/test/arthas-agent.jar -jar arthas-demo.jar
Windows下安裝使用
arthas\arthas-packaging-3.1.4-bin\ 下面有一個arthas-boot.jar包
執行 (需要保證執行該程序的用戶需要和目標進程具有相同權限)java -jar arthas-boot.jar
命令行會找到本機所有正在運行的Java進程並編號輸入編號進入相應的Java進程
阿里提供了比較友好的WebConsole,可以在瀏覽器輸入127.0.0.1:8563 進行訪問
當我們進入這個界面之后,想了解我們的JAVA進程內部的任何信息,都可以找到相關命令去獲取信息,每個命令后都可加相關參數去查詢更精准的所需信息
dashboard 當前系統的實時數據面板,按 ctrl+c 退出。
thread 查看當前線程信息,查看線程的堆棧
jvm 查看當前JVM信息
sysprop 查看當前JVM的系統屬性(System Property
)
sysenv 查看當前JVM的環境屬性(System Environment Variables
)
vmoption 查看,更新VM診斷相關的參數
perfcounter 查看當前JVM的 Perf Counter信息
sc 查看JVM已加載類信息
sm 查看已加載類的方法信息
jad 反編譯指定已加載類的源碼
watch 讓你能方便的觀察到指定方法的調用情況。能觀察到的范圍為:返回值
、拋出異常
、入參
,通過編寫 OGNL 表達式進行對應變量的查看
trace 方法內部調用路徑,並輸出方法路徑上的每個節點上耗時
命令還有很多,這里就不一一列舉,此處僅為拋磚引玉,欲知更多相關內容,請再次奔向官網,官網也有中文文檔,對於國人開發者也比較友好