架构师小跟班:推荐一款Java在线诊断工具,arthas入门及使用教程
安裝
官方網(wǎng)站:
https://alibaba.github.io/arthas/index.html
一、下載arthas-boot.jar,然后用java -jar的方式啟動(dòng):
wget https://alibaba.github.io/arthas/arthas-boot.jar
啟動(dòng)程序:
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
使用入門
一、啟動(dòng)Demo
wget https://alibaba.github.io/arthas/arthas-demo.jar
java -jar arthas-demo.jar
二、啟動(dòng)arthas
使用和目標(biāo)進(jìn)程一致的用戶啟動(dòng),否則可能attach失敗
wget https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar
輸入demo對(duì)應(yīng)的數(shù)字
三、查看dashboard面板
四、通過thread命令來獲取到arthas-demo進(jìn)程的Main Class
thread 1會(huì)打印線程ID 1的棧,通常是main函數(shù)的線程。
五、通過jad來反編譯Main Class
六、通過watch命令來查看demo.MathGame#primeFactors函數(shù)的返回值
該方法的源碼:返回的是一個(gè)數(shù)字類型的List
七、退出arthas
如果只是退出當(dāng)前的連接,可以用quit或者exit命令。Attach到目標(biāo)進(jìn)程上的arthas還會(huì)繼續(xù)運(yùn)行,端口會(huì)保持開放,下次連接時(shí)可以直接連接上。
如果想完全退出arthas,可以執(zhí)行shutdown命令。
webconsole
Arthas目前支持Web Console,用戶在attach成功之后,可以直接訪問:
http://127.0.0.1:8563/
可以填入IP,遠(yuǎn)程連接其它機(jī)器上的arthas
開啟執(zhí)行結(jié)果存日志功能
默認(rèn)是關(guān)閉的,options save-result true,結(jié)果會(huì)異步保存在:{user.home}/logs/arthas-cache/result.log
通過sysprop user.home命令查看用戶根路徑
常用命令
help——查看命令幫助信息
cat——打印文件內(nèi)容,和linux里的cat命令類似
pwd——返回當(dāng)前的工作目錄,和linux命令類似
cls——清空當(dāng)前屏幕區(qū)域
session——查看當(dāng)前會(huì)話的信息
reset——重置增強(qiáng)類,將被 Arthas 增強(qiáng)過的類全部還原,Arthas 服務(wù)端關(guān)閉時(shí)會(huì)重置所有增強(qiáng)過的類
version——輸出當(dāng)前目標(biāo) Java 進(jìn)程所加載的 Arthas 版本號(hào)
history——打印命令歷史
quit——退出當(dāng)前 Arthas 客戶端,其他 Arthas 客戶端不受影響
shutdown——關(guān)閉 Arthas 服務(wù)端,所有 Arthas 客戶端全部退出
keymap——Arthas快捷鍵列表及自定義快捷鍵
jvm相關(guān)
dashboard——當(dāng)前系統(tǒng)的實(shí)時(shí)數(shù)據(jù)面板
thread——查看當(dāng)前 JVM 的線程堆棧信息
jvm——查看當(dāng)前 JVM 的信息
sysprop——查看和修改JVM的系統(tǒng)屬性
sysenv——查看JVM的環(huán)境變量
getstatic——查看類的靜態(tài)屬性
New!ognl——執(zhí)行ognl表達(dá)式
New!mbean——查看 Mbean 的信息
class/classloader相關(guān)
sc——查看JVM已加載的類信息
sm——查看已加載類的方法信息
jad——反編譯指定已加載類的源碼
mc——內(nèi)存編繹器,內(nèi)存編繹.java文件為.class文件
redefine——加載外部的.class文件,redefine到JVM里
dump——dump 已加載類的 byte code 到特定目錄
classloader——查看classloader的繼承樹,urls,類加載信息,使用classloader去getResource
monitor/watch/trace相關(guān)
請(qǐng)注意,這些命令,都通過字節(jié)碼增強(qiáng)技術(shù)來實(shí)現(xiàn)的,會(huì)在指定類的方法中插入一些切面來實(shí)現(xiàn)數(shù)據(jù)統(tǒng)計(jì)和觀測(cè),因此在線上、預(yù)發(fā)使用時(shí),請(qǐng)盡量明確需要觀測(cè)的類、方法以及條件,診斷結(jié)束要執(zhí)行shutdown或?qū)⒃鰪?qiáng)過的類執(zhí)行reset命令。
monitor——方法執(zhí)行監(jiān)控
watch——方法執(zhí)行數(shù)據(jù)觀測(cè)
trace——方法內(nèi)部調(diào)用路徑,并輸出方法路徑上的每個(gè)節(jié)點(diǎn)上耗時(shí)
stack——輸出當(dāng)前方法被調(diào)用的調(diào)用路徑
tt——方法執(zhí)行數(shù)據(jù)的時(shí)空隧道,記錄下指定方法每次調(diào)用的入?yún)⒑头祷匦畔?#xff0c;并能對(duì)這些不同的時(shí)間下調(diào)用進(jìn)行觀測(cè)
options
options——查看或設(shè)置Arthas全局開關(guān)
管道
Arthas支持使用管道對(duì)上述命令的結(jié)果進(jìn)行進(jìn)一步的處理,如sm java.lang.String * | grep 'index'
grep——搜索滿足條件的結(jié)果
plaintext——將命令的結(jié)果去除ANSI顏色
wc——按行統(tǒng)計(jì)輸出結(jié)果
后臺(tái)異步任務(wù)
當(dāng)線上出現(xiàn)偶發(fā)的問題,比如需要watch某個(gè)條件,而這個(gè)條件一天可能才會(huì)出現(xiàn)一次時(shí),異步后臺(tái)任務(wù)就派上用場(chǎng)了,詳情請(qǐng)參考這里
使用 > 將結(jié)果重寫向到日志文件,使用 & 指定命令是后臺(tái)運(yùn)行,session斷開不影響任務(wù)執(zhí)行(生命周期默認(rèn)為1天)
jobs——列出所有job
kill——強(qiáng)制終止任務(wù)
fg——將暫停的任務(wù)拉到前臺(tái)執(zhí)行
bg——將暫停的任務(wù)放到后臺(tái)執(zhí)行
Web Console
通過websocket連接Arthas。
Web Console
轉(zhuǎn)載于:https://my.oschina.net/u/3759369/blog/3077945
總結(jié)
以上是生活随笔為你收集整理的架构师小跟班:推荐一款Java在线诊断工具,arthas入门及使用教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UE4入门之软件安装
- 下一篇: java 大小写匹配_大写字母的Java