Arthas是什麼
Arthas 是Alibaba開源的Java診斷工具,方便開發者進行問題的定位和診斷。git
巨人的肩膀
- greys-anatomy: Arthas代碼基於Greys二次開發而來
- termd: Arthas的命令行實現基於termd開發,termd是一款優秀的命令行程序開發框架
- crash: Arthas的文本渲染功能基於crash中的文本渲染功能開發
- cli: Arthas的命令行界面基於vert.x提供的cli庫進行開發
能夠作什麼
- 查看方法調用狀況
- 查看方法入參
- 反編譯源碼
- 查看系統的運行情況
- 監控到JVM的實時運行狀態
- more..
安裝
-
方法一,使用arthas-boot(推薦):github
wget https://alibaba.github.io/arthas/arthas-boot.jar java -jar arthas-boot.jar
-
方法二,使用as.sh:shell
curl -L https://alibaba.github.io/arthas/install.sh | sh
啓動
在上一步安裝完成以後,會下載啓動腳本文件 as.sh 到當前目錄,直接在shell下面執行./as.sh,此時會出現當前運行着的Java程序,輸入你想診斷的程序的序號,就會進入交互界面,而後能夠在交互界面執行各類arthas命令來幫咱們診斷程序。框架
命令實例
- Dashboard 查看當前系統和jvm的信息:
dashboard
<img src="http://images.cnblogs.com/cnblogs_com/muxuanchan/1359920/o_dashboard.png" width = "600" height = "400" alt="dashboard" align=center />curl
- Jad
- 此命令能夠查看線上運行的代碼是否和你預期的同樣
反編譯WmsCarInsAOImpl類源碼:jad com.mhc.mclaren.ao.impl.WmsCarInsAOImpl
jvm
- Stack
- 運行此命令以後須要即時觸發方法纔會有響應的信息打印在控制檯上
查看方法 com.mhc.mclaren.ao.impl.WmsCarInsAOImpl#setInsInfo 的調用堆棧工具
- Trace
- 運行此命令以後須要即時觸發方法纔會有響應的信息打印在控制檯上
- 只能看到下一級的子調用
觀察方法 com.mhc.mclaren.ao.impl.WmsCarInsAOImpl#setInsInfo 執行的時候每一個子調用的運行時長,能夠找到最耗時的子調用。atom
- Watch
- 運行此命令以後須要即時觸發方法纔會有響應的信息打印在控制檯上
觀察方法 com.mhc.mclaren.ao.impl.WmsCarInsAOImpl#setInsInfo 執行的入參url
總結
上面用幾個實際的例子讓你對arthas有一個直觀的印象,可是arthas能作的事還遠遠不止這些,有更多的命令和用法值得你去挖掘,相信它對於你定位線上問題有不小的幫助,let`s enjoy it !!