阿里開源的Java動態追蹤工具Arthas使用

本文僅測試及學習Arthas命令的使用方式,對原理不做探討,有興趣的胖友可以戳下方美團博客的鏈接,講解的十分不錯.

相關鏈接

arthas中文官方網站

美團博客關於java動態追蹤的一篇文章,講解了部分原理,推薦閱讀

官方的命令參考手冊

介紹

arthas是什麼?能做什麼?

這裏copy官方文檔的一段話來告訴大家.

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

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

  1. 這個類從哪個 jar 包加載的?爲什麼會報各種類相關的 Exception?
  2. 我改的代碼爲什麼沒有執行到?難道是我沒 commit?分支搞錯了?
  3. 遇到問題無法在線上 debug,難道只能通過加日誌再重新發布嗎?
  4. 線上遇到某個用戶的數據處理有問題,但線上同樣無法 debug,線下無法重現!
  5. 是否有一個全局視角來查看系統的運行狀況?
  6. 有什麼辦法可以監控到JVM的實時運行狀態?

Arthas支持JDK 6+,支持Linux/Mac/Winodws,採用命令行交互模式,同時提供豐富的 Tab 自動補全功能,進一步方便進行問題的定位和診斷。

安裝

推薦使用:

wget https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar

選擇已經運行的java進程即可.

之後會進入arthas命令行,也可以選擇在瀏覽器打開127.0.0.1:8563,通過webUI來操作.

功能

dashboard

可以查看當前JVM的內存信息以及線程信息.

thread

直接使用可以列出所有的線程,也可以使用thread 1,來查看具體某個線程的堆棧信息.(後面的數字爲線程ID).

jad

反編譯某個class,jad demo.MathGame,會在命令行打印出反編譯之後的源碼.

watch

通過watch命令來持續觀測某一個方法的返回值.

watch demo.MathGame primeFactors returnObj

退出

使用exit/quit命令,暫時退出,後續可以繼續連接.

使用shutdown命令徹底斷開連接並reset class文件.

sc,sm

查看對應的類加載信息,方法加載信息.

trace

查看方法的內部調用路徑,並返回每個節點的耗時情況.

stack

輸出當前方法被調用的調用路徑

完.





ChangeLog

2019-03-07 完成

以上皆爲個人所思所得,如有錯誤歡迎評論區指正。

歡迎轉載,煩請署名並保留原文鏈接。

聯繫郵箱:[email protected]

更多學習筆記見個人博客------>呼延十

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章