Java診斷工具Arthas
阿新 • • 發佈:2018-12-07
Java診斷工具Arthas
1. Arthas簡介
Arthas是阿里開源的一個線上java診斷工具,發現阿里還是挺喜歡開源一些技術的,造福人類。昨天試用了一下,發現真是強大,解決了我工作兩年的很多困擾,有點相見恨晚的感覺。
根據官網的說明,它能解決下面的問題:
當你遇到以下類似問題而束手無策時,
Arthas
可以幫助你解決:
- 這個類從哪個 jar 包載入的?為什麼會報各種類相關的 Exception?
- 我改的程式碼為什麼沒有執行到?難道是我沒 commit?分支搞錯了?
- 遇到問題無法在線上 debug,難道只能通過加日誌再重新發布嗎?
- 線上遇到某個使用者的資料處理有問題,但線上同樣無法 debug,線下無法重現!
- 是否有一個全域性視角來檢視系統的執行狀況?
- 有什麼辦法可以監控到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相關的命令。