Alibaba開源的Java診斷工具 -- Arthas


Arthas 是Alibaba開源的Java診斷工具,方便開發者進行問題的定位和診斷。用戶文檔:https://arthas.aliyun.com/doc/

熱編譯: https://developer.aliyun.com/article/690240 

可以

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

安裝

  • 方法一,使用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

     

idea中安裝Alibaba Cloud Toolkit

安裝成功后會有以下圖

 

 

 其中Upload上傳文件,  更多里的Diagnostic診斷代碼;

 

使用arthas修復線上代碼

 

替換代碼的流程:

1、jad命令 將需要更改的文件先進行反編譯,保存下來 ,編譯器修改

$ jad --source-only com.chitic.supplywater.common.controller.DahuaApiImpl > /tmp/common/DemoApplication.java

修改完以后需要將類重新加載到JVM

2、SC命令 查找當前類是哪個classLoader加載的

$ sc -d com.chitic.supplywater.common.controller.DahuaApiImpl | grep classLoader

classLoaderHash 20ad9418 #類加載器 編號

3、MC命令 用指定的classloader重新將類在內存中編譯

$ mc -c 20ad9418 /tmp/common/DemoApplication.java -d /tmp/common 
Memory compiler output:
/tmp/common/com/chitic/supplywater/common/controller/DemoApplication.class

 

注意:mc編譯可能出錯,可以在本地編譯好然后上傳到服務器


4、redefine命令 將編譯后的類加載到JVM

上邊編譯后的.class文件地址

$ redefine -c 20ad9418 /tmp/common/com/chitic/supplywater/common/controller/DemoApplication.class redefine success, size: 1

 

 


免責聲明!

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



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