什么是Arthas?
Arthas(阿爾薩斯)是阿里巴巴中間件開源的一款Java診斷工具,開始在淘寶內部孵化使用,后來成為阿里Java項目必須使用的內部工具。2018年arthas成為阿里開源項目,代碼托管在GitHub上,star數高達23.3k,深受Java開發者的喜愛
Arthas基於Greys進行二次開發,主要利用Java6開始提供的instrumentation特性,動態增強你所指定的類,獲取你想要得到的信息,采用命令行交互模式,同時提供tab自動補全功能,無需重啟;動態跟蹤Java代碼;實現監控jvm狀態。
原理:進程間通訊的方式,啟動客戶端attach到目標進程的虛擬機上,然后遠程執行一些操作。很多方法都是通過字節碼增強技術來實現的,會在指定類的方法中插入一些切面來實現數據統計和觀測,因此在線上、預發使用時,需要盡量明確需要觀測的類、方法以及條件,診斷結束后要執行stop獲或者將增強過的類執行reset命令。
為什么需要Arthas?
當你遇到以下類似問題而束手無策時,Arthas可以幫助你解決:
這個類從哪個 jar 包加載的?為什么會報各種類相關的 Exception?
我改的代碼為什么沒有執行到?難道是我沒 commit?分支搞錯了?
遇到問題無法在線上 debug,難道只能通過加日志再重新發布嗎?
線上遇到某個用戶的數據處理有問題,但線上同樣無法 debug,線下無法重現!
是否有一個全局視角來查看系統的運行狀況?
有什么辦法可以監控到JVM的實時運行狀態?
怎么快速定位應用的熱點,生成火焰圖?
Arthas支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同時提供豐富的 Tab 自動補全功能,進一步方便進行問題的定位和診斷。
優點:
定位問題減少重新編譯代碼、重啟服務
動態監控Java進程
0代碼侵入
靈活、可插拔
安裝
參考:https://arthas.aliyun.com/doc/install-detail.html
1、jdk安裝配置
2、解壓arthas-3.x.x-bin.zip即可使用
3、java -jar arthas-boot.jar
卸載
在 Linux/Unix/Mac 平台
刪除下面文件:
rm -rf ~/.arthas/
rm -rf ~/logs/arthas
Windows平台直接刪除user home下面的.arthas和logs/arthas目錄
啟動
java -jar arthas-boot.jar
在命令行執行(使用與目標進程一致的用戶啟動,否則可能attach失敗)
退出
如果只是退出當前的連接,可以直接quit或者exit退出。attach到目標進程的arthas還會繼續運行,端口會保持開放,下次連接時可以直接連接上。如果想完全退出,請執行stop命令。
基礎命令
help——查看命令幫助信息
cls——清空當前屏幕區域
session——查看當前會話的信息
reset——重置增強類,將被 Arthas 增強過的類全部還原,Arthas 服務端關閉時會重置所有增強過的類
version——輸出當前目標 Java 進程所加載的 Arthas 版本號
history——打印命令歷史
quit——退出當前 Arthas 客戶端,其他 Arthas 客戶端不受影響
stop——關閉 Arthas 服務端,所有 Arthas 客戶端全部退出
keymap——Arthas快捷鍵列表及自定義快捷鍵
JVM相關命令
dashboard--當前系統的實時數據面板
thread--查看當前JVM線程堆棧信息
jvm--查看當前jvm的信息
sysprop--查看和修改JVM的系統屬性
sysenv--查看JVM的環境變量
getstatic--查看類的靜態屬性
ognl--查看ognl表達式
mbean--查看MBean的信息
vmoption--查看JVM參數
觀測相關命令
請注意,這些命令都是字節碼增強技術實現的,會在指定類的方法中插入一些切面來實現數據統計和觀測,因此線上、預發使用時,需要盡量明確需要觀測的類、方法以及條件,診斷結束后也要執行stop命令或者將增強過的類執行reset命令
monitor--方法執行監控
watch--方法執行數據觀測
trace--方法內部調用路徑,並輸出方法路徑上的每個節點上耗時
stack--輸出當前方法被調用的調用路徑
tt--方法執行數據的時空隧道,記錄下指定方法每次調用的入參、出參,並能對這些不同時間下的調用進行觀測
GitHub地址:https://github.com/alibaba/arthas/wiki
用戶手冊:https://arthas.aliyun.com/doc/quick-start.html
思維導圖:https://user-images.githubusercontent.com/1683936/71873638-a697b800-315a-11ea-9862-fbfa8e470064.png