Arthas
是Alibaba開源的Java診斷工具。參考:https://alibaba.github.io/arthas/
當你遇到以下類似問題而束手無策時,Arthas
可以幫助你解決:
-
這個類從哪個 jar 包加載的?爲什麼會報各種類相關的 Exception?
-
我改的代碼爲什麼沒有執行到?難道是我沒 commit?分支搞錯了?
-
遇到問題無法在線上 debug,難道只能通過加日誌再重新發布嗎?
-
線上遇到某個用戶的數據處理有問題,但線上同樣無法 debug,線下無法重現!
-
是否有一個全局視角來查看系統的運行狀況?
-
有什麼辦法可以監控到JVM的實時運行狀態?
-
怎麼快速定位應用的熱點,生成火焰圖?
Arthas
支持JDK 6+,支持Linux/Mac/Winodws,採用命令行交互模式,同時提供豐富的 Tab
自動補全功能,進一步方便進行問題的定位和診斷。
1、安裝(Linux):
curl -L https://alibaba.github.io/arthas/install.sh | sh
2、啓動:
./as.as
序號後的數值(如:15075)爲當前服務器上的進程PID。選擇你要排查的項目進程,選擇序號(如:1):
則進入到arthas交互頁面。
3、常用命令:
3.1)“上帝視角”,即Dashboard。對當前項目的數據監控。
3.2)thread。查看當前線程信息,查看線程的堆棧。
thread:查看所有線程。
thread -n 5:查看最忙(CPU使用率最高)的5條線程。
thread -b:找出當前阻塞其他線程的線程。
thread -state:查看指定狀態的線程。
3.3)jad。反編譯class。
jad com.icode.controller.VersionController
3.4) watch。觀察指定方法的調用情況。能觀察到的範圍爲:返回值
、拋出異常
、入參
,通過編寫 OGNL 表達式進行對應變量的查看。
如查看某個方法的返回值:
watch 全路徑類名 方法名 returnObj
3.5) trace。輸出方法路徑上的每個節點上耗時。
trace 全路徑類名 方法名
3.6)jvm。查看當前JVM信息。
4、中斷、退出:
4.1)使用ctrl+c中斷artahs執行。
4.2)使用 exit 退出arthas。
此外,arthas還提供web console。通過瀏覽器連接arthas。
其他常用命令,以及用法參考官方文檔。 這裏只展示幾個測試用的簡單上手命令。以供以後查閱。