Arthas實戰


Arthas: 官網    github

Arthas是什么

Arthas 是Alibaba開源的Java診斷工具,方便開發者進行問題的定位和診斷。

巨人的肩膀

  • greys-anatomy: Arthas代碼基於Greys二次開發而來
  • termd: Arthas的命令行實現基於termd開發,termd是一款優秀的命令行程序開發框架
  • crash: Arthas的文本渲染功能基於crash中的文本渲染功能開發
  • cli: Arthas的命令行界面基於vert.x提供的cli庫進行開發

可以做什么

  1. 查看方法調用情況
  2. 查看方法入參
  3. 反編譯源碼
  4. 查看系統的運行狀況
  5. 監控到JVM的實時運行狀態
  6. more..

安裝

  • 方法一,使用arthas-boot(推薦):

      wget https://alibaba.github.io/arthas/arthas-boot.jar  
      java -jar arthas-boot.jar
    
  • 方法二,使用as.sh:

      curl -L https://alibaba.github.io/arthas/install.sh | sh
    

啟動

在上一步安裝完成之后,會下載啟動腳本文件 as.sh 到當前目錄,直接在shell下面執行./as.sh,此時會出現當前運行着的Java程序,輸入你想診斷的程序的序號,就會進入交互界面,然后可以在交互界面執行各種arthas命令來幫我們診斷程序。

命令實例

  • Dashboard
    查看當前系統和jvm的信息:dashboard
dashboard
  • Jad
  • 此命令可以查看線上運行的代碼是否和你預期的一樣

反編譯WmsCarInsAOImpl類源碼:jad com.mhc.mclaren.ao.impl.WmsCarInsAOImpl

  • Stack
  • 運行此命令之后需要即時觸發方法才會有響應的信息打印在控制台上

查看方法 com.mhc.mclaren.ao.impl.WmsCarInsAOImpl#setInsInfo 的調用堆棧

  • Trace
  • 運行此命令之后需要即時觸發方法才會有響應的信息打印在控制台上
  • 只能看到下一級的子調用

觀察方法 com.mhc.mclaren.ao.impl.WmsCarInsAOImpl#setInsInfo 執行的時候每個子調用的運行時長,可以找到最耗時的子調用。

  • Watch
  • 運行此命令之后需要即時觸發方法才會有響應的信息打印在控制台上

觀察方法 com.mhc.mclaren.ao.impl.WmsCarInsAOImpl#setInsInfo 執行的入參

總結

  上面用幾個實際的例子讓你對arthas有一個直觀的印象,但是arthas能做的事還遠遠不止這些,有更多的命令和用法值得你去挖掘,相信它對於你定位線上問題有不小的幫助,let`s enjoy it !!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM