阿里JAVA診斷工具Arthas的初步使用

Arthas 是Alibaba開源的Java診斷工具,主要解決如下問題:html

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

今天咱們主要使用Arthas的請求追蹤、反編譯以及接口參數監控。java

1、Arthas的下載。git

  一、先從官方git地址https://github.com/alibaba/arthas/blob/master/README_CN.md下載Arthas的jar包,而後執行java -jar 運行該jar包。若是以爲官網下載慢也能夠直接在我分享的百度雲盤中下載(連接: https://pan.baidu.com/s/1sTyU03uSUObOxtW4RkPkNw&shfl=shareset 提取碼: drw1 )github

2、Arthas的啓動。工具

  Arthas啓動的前提是要啓動你的java項目,由於Arthas啓動時會自動掃描機器上運行的java項目,以下圖spa

 

 

 3、經常使用命令debug

  一、sc 命令,這個命令能搜索出全部已經加載到 JVM 中的 Class 信息3d

日誌

 

 

 

  好比sc -d 打印該類的詳細信息code

 

 

  二、trace 命令,方法內部調用路徑,並輸出方法路徑上的每一個節點上耗時,可使用該命令來檢測接口裏那一步耗時較多。注意:每次只能跟蹤一級方法的調用鏈路。

 

 

   這時只須要調用接口就行,以下:

 

 

  繼續追蹤getLaboratoryRelationship這個接口,查看裏面方法的具體耗時:

 

 

4、watch命令,該命令能方便的觀察到指定方法的調用狀況。能觀察到的範圍爲:返回值拋出異常入參。

 

 

固然這只是Arthas的一小部分功能,若是還須要更詳細的介紹,請移步官方API文檔https://alibaba.github.io/arthas/index.html

相關文章
相關標籤/搜索