架構師小跟班:推薦一款Java在線診斷工具,arthas入門及使用教程

安裝

官方網站:html

https://alibaba.github.io/arthas/index.htmljava

1、下載arthas-boot.jar,而後用java -jar的方式啓動:linux

wget https://alibaba.github.io/arthas/arthas-boot.jargit

啓動程序:github

java -jar arthas-boot.jarweb

打印幫助信息:websocket

java -jar arthas-boot.jar -hsession

若是下載速度比較慢,可使用aliyun的鏡像:異步

java -jar arthas-boot.jar --repo-mirror aliyun --use-httpjvm

若是從github下載有問題,可使用gitee鏡像

wget https://arthas.gitee.io/arthas-boot.jar

使用入門

1、啓動Demo

wget https://alibaba.github.io/arthas/arthas-demo.jar

java -jar arthas-demo.jar

2、啓動arthas

使用和目標進程一致的用戶啓動,不然可能attach失敗

wget https://alibaba.github.io/arthas/arthas-boot.jar

java -jar arthas-boot.jar

輸入demo對應的數字

3、查看dashboard面板

4、經過thread命令來獲取到arthas-demo進程的Main Class

thread 1會打印線程ID 1的棧,一般是main函數的線程。

5、經過jad來反編譯Main Class

6、經過watch命令來查看demo.MathGame#primeFactors函數的返回值

該方法的源碼:返回的是一個數字類型的List

7、退出arthas

若是隻是退出當前的鏈接,能夠用quit或者exit命令。Attach到目標進程上的arthas還會繼續運行,端口會保持開放,下次鏈接時能夠直接鏈接上。

若是想徹底退出arthas,能夠執行shutdown命令。

webconsole

Arthas目前支持Web Console,用戶在attach成功以後,能夠直接訪問:

http://127.0.0.1:8563/

能夠填入IP,遠程鏈接其它機器上的arthas

開啓執行結果存日誌功能

默認是關閉的,options save-result true,結果會異步保存在:{user.home}/logs/arthas-cache/result.log

經過sysprop user.home命令查看用戶根路徑


經常使用命令

help——查看命令幫助信息

cat——打印文件內容,和linux裏的cat命令相似

pwd——返回當前的工做目錄,和linux命令相似

cls——清空當前屏幕區域

session——查看當前會話的信息

reset——重置加強類,將被 Arthas 加強過的類所有還原,Arthas 服務端關閉時會重置全部加強過的類

version——輸出當前目標 Java 進程所加載的 Arthas 版本號

history——打印命令歷史

quit——退出當前 Arthas 客戶端,其餘 Arthas 客戶端不受影響

shutdown——關閉 Arthas 服務端,全部 Arthas 客戶端所有退出

keymap——Arthas快捷鍵列表及自定義快捷鍵

jvm相關

dashboard——當前系統的實時數據面板

thread——查看當前 JVM 的線程堆棧信息

jvm——查看當前 JVM 的信息

sysprop——查看和修改JVM的系統屬性

sysenv——查看JVM的環境變量

getstatic——查看類的靜態屬性

New!ognl——執行ognl表達式

New!mbean——查看 Mbean 的信息

class/classloader相關

sc——查看JVM已加載的類信息

sm——查看已加載類的方法信息

jad——反編譯指定已加載類的源碼

mc——內存編繹器,內存編繹.java文件爲.class文件

redefine——加載外部的.class文件,redefine到JVM裏

dump——dump 已加載類的 byte code 到特定目錄

classloader——查看classloader的繼承樹,urls,類加載信息,使用classloader去getResource

monitor/watch/trace相關

請注意,這些命令,都經過字節碼加強技術來實現的,會在指定類的方法中插入一些切面來實現數據統計和觀測,所以在線上、預發使用時,請儘可能明確須要觀測的類、方法以及條件,診斷結束要執行shutdown或將加強過的類執行reset命令。

monitor——方法執行監控

watch——方法執行數據觀測

trace——方法內部調用路徑,並輸出方法路徑上的每一個節點上耗時

stack——輸出當前方法被調用的調用路徑

tt——方法執行數據的時空隧道,記錄下指定方法每次調用的入參和返回信息,並能對這些不一樣的時間下調用進行觀測

options

options——查看或設置Arthas全局開關

管道

Arthas支持使用管道對上述命令的結果進行進一步的處理,如sm java.lang.String * | grep 'index'

grep——搜索知足條件的結果

plaintext——將命令的結果去除ANSI顏色

wc——按行統計輸出結果

後臺異步任務

當線上出現偶發的問題,好比須要watch某個條件,而這個條件一天可能纔會出現一次時,異步後臺任務就派上用場了,詳情請參考這裏

使用 > 將結果重寫向到日誌文件,使用 & 指定命令是後臺運行,session斷開不影響任務執行(生命週期默認爲1天)

jobs——列出全部job

kill——強制終止任務

fg——將暫停的任務拉到前臺執行

bg——將暫停的任務放到後臺執行

Web Console

經過websocket鏈接Arthas。

Web Console

相關文章
相關標籤/搜索