1. 程式人生 > >Java診斷工具Arthas

Java診斷工具Arthas

Java診斷工具Arthas

1. Arthas簡介

Arthas是阿里開源的一個線上java診斷工具,發現阿里還是挺喜歡開源一些技術的,造福人類。昨天試用了一下,發現真是強大,解決了我工作兩年的很多困擾,有點相見恨晚的感覺。

根據官網的說明,它能解決下面的問題:

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

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

Arthas採用命令列互動模式,同時提供豐富的 Tab 自動補全功能,進一步方便進行問題的定位和診斷。

2. Arthas安裝

在Linux下直接執行curl -L https://alibaba.github.io/arthas/install.sh | sh,然後執行./as.sh就可以進入到Arthas的命令列介面。

3. Arthas試用

安裝完後試用了它的監控相關的功能,以後除錯就不那麼麻煩了。

3.1 monitor命令

monitor可以對某個類的某個方法進行週期性監控,來輸出方法的平均響應時間,成功失敗次數,呼叫次數等。具體使用請見:

https://alibaba.github.io/art...

3.2 watch命令

watch可以監控某個方法的出入參,異常資訊等,具體使用請見:https://alibaba.github.io/art...

3.3 trace命令

trace可以輸出方法內部呼叫關係,並列印方法內部每個呼叫的耗時,具體使用請見:https://alibaba.github.io/art...

3.4 stack命令

stack可以輸出方法的整個呼叫路徑,具體使用請見:https://alibaba.github.io/art...

3.5 tt命令

記錄方法每次的調用出入參和異常資訊,並且完整保留呼叫現場,可以再次模擬呼叫。具體使用請見:

https://alibaba.github.io/art...

當然除此之外還有很豐富的其他功能,比如JVM,ClassLoader相關的命令。