架构师小跟班:推荐一款Java在线诊断工具,arthas入门及使用教程
安裝
官方網站:
https://alibaba.github.io/arthas/index.html
一、下載arthas-boot.jar,然后用java -jar的方式啟動:
wget https://alibaba.github.io/arthas/arthas-boot.jar
啟動程序:
java -jar arthas-boot.jar
打印幫助信息:
java -jar arthas-boot.jar -h
如果下載速度比較慢,可以使用aliyun的鏡像:
java -jar arthas-boot.jar --repo-mirror aliyun --use-http
如果從github下載有問題,可以使用gitee鏡像
wget https://arthas.gitee.io/arthas-boot.jar
使用入門
一、啟動Demo
wget https://alibaba.github.io/arthas/arthas-demo.jar
java -jar arthas-demo.jar
二、啟動arthas
使用和目標進程一致的用戶啟動,否則可能attach失敗
wget https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar
輸入demo對應的數字
三、查看dashboard面板
四、通過thread命令來獲取到arthas-demo進程的Main Class
thread 1會打印線程ID 1的棧,通常是main函數的線程。
五、通過jad來反編譯Main Class
六、通過watch命令來查看demo.MathGame#primeFactors函數的返回值
該方法的源碼:返回的是一個數字類型的List
七、退出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
轉載于:https://my.oschina.net/u/3759369/blog/3077945
總結
以上是生活随笔為你收集整理的架构师小跟班:推荐一款Java在线诊断工具,arthas入门及使用教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UE4入门之软件安装
- 下一篇: PowerBI网关on-premises