推薦使用arthas-boot.jar方式
1姆另、下載及安裝
wget https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar --target-ip 0.0.0.0
arthas-boot是Arthas的啟動程序,它啟動后侣颂,會列出所有的Java進(jìn)程档桃,用戶可以選擇需要診斷的目標(biāo)進(jìn)程。
特別說明:(重點(diǎn))
:arthas不可以直接遠(yuǎn)程連接憔晒,啟動arthas時輸入的ip和端口都是本機(jī)暴露給外界的ip和端口
target-ip
: 如果要在其他機(jī)器使用Web Console,請?zhí)顚懕緳C(jī)的ip(如:192.168.33.44),此時可以訪問:http://ip:8563
windows下報(bào)錯處理:
com.sun.tools.attach.AttachNotSupportedException: no providers installed藻肄,請檢查<jdk>/bin/或者/<jdk>/jre/bin下是否有attach.dll
文件销凑,如果沒有請重新安裝jdk,本人親測版本jdk1.8.0_201。
2仅炊、命令列表
- dashboard
- thread
- jvm
- sysprop
- sysenv
- getstatic
- ognl
- sc
- sm
- dump
- jad
- classloader
- mc
- redefine
- monitor
- watch
- trace
- stack
- tt
- cat
- pwd
- options
基礎(chǔ)命令
- help——查看命令幫助信息
- cls——清空當(dāng)前屏幕區(qū)域
- session——查看當(dāng)前會話的信息
- reset——重置增強(qiáng)類,將被 Arthas 增強(qiáng)過的類全部還原澎蛛,Arthas 服務(wù)端關(guān)閉時會重置所有增強(qiáng)過的類
- version——輸出當(dāng)前目標(biāo) Java 進(jìn)程所加載的 Arthas 版本號
- history——打印命令歷史
- quit——退出當(dāng)前 Arthas 客戶端抚垄,其他 Arthas 客戶端不受影響
- shutdown——關(guān)閉 Arthas 服務(wù)端,所有 Arthas 客戶端全部退出
- keymap——Arthas快捷鍵列表及自定義快捷鍵
3谋逻、進(jìn)階使用
基礎(chǔ)命令
- help——查看命令幫助信息
- cat——打印文件內(nèi)容呆馁,和linux里的cat命令類似
- pwd——返回當(dāng)前的工作目錄,和linux命令類似
- cls——清空當(dāng)前屏幕區(qū)域
- session——查看當(dāng)前會話的信息
- reset——重置增強(qiáng)類毁兆,將被 Arthas 增強(qiáng)過的類全部還原浙滤,Arthas 服務(wù)端關(guān)閉時會重置所有增強(qiáng)過的類
- version——輸出當(dāng)前目標(biāo) Java 進(jìn)程所加載的 Arthas 版本號
- history——打印命令歷史
- quit——退出當(dāng)前 Arthas 客戶端,其他 Arthas 客戶端不受影響
- shutdown——關(guān)閉 Arthas 服務(wù)端气堕,所有 Arthas 客戶端全部退出
- keymap——Arthas快捷鍵列表及自定義快捷鍵
jvm相關(guān)
- dashboard——當(dāng)前系統(tǒng)的實(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á)式
class/classloader相關(guān)
- sc——查看JVM已加載的類信息
- sm——查看已加載類的方法信息
- jad——反編譯指定已加載類的源碼
- mc——內(nèi)存編繹器纺腊,內(nèi)存編繹.java文件為.class文件
- redefine——加載外部的文件,redefine到JVM里
- dump——dump 已加載類的 byte code 到特定目錄
- classloader——查看classloader的繼承樹茎芭,urls揖膜,類加載信息,使用classloader去getResource
monitor/watch/trace相關(guān)
請注意梅桩,這些命令壹粟,都通過字節(jié)碼增強(qiáng)技術(shù)來實(shí)現(xiàn)的,會在指定類的方法中插入一些切面來實(shí)現(xiàn)數(shù)據(jù)統(tǒng)計(jì)和觀測宿百,因此在線上趁仙、預(yù)發(fā)使用時,請盡量明確需要觀測的類垦页、方法以及條件雀费,診斷結(jié)束要執(zhí)行或?qū)⒃鰪?qiáng)過的類執(zhí)行 命令。
- monitor——方法執(zhí)行監(jiān)控
- watch——方法執(zhí)行數(shù)據(jù)觀測
- trace——方法內(nèi)部調(diào)用路徑外臂,并輸出方法路徑上的每個節(jié)點(diǎn)上耗時
- stack——輸出當(dāng)前方法被調(diào)用的調(diào)用路徑
- tt——方法執(zhí)行數(shù)據(jù)的時空隧道坐儿,記錄下指定方法每次調(diào)用的入?yún)⒑头祷匦畔ⅲ⒛軐@些不同的時間下調(diào)用進(jìn)行觀測
options
- options——查看或設(shè)置Arthas全局開關(guān)
管道
Arthas支持使用管道對上述命令的結(jié)果進(jìn)行進(jìn)一步的處理宋光,如sm java.lang.String * | grep 'index'
- grep——搜索滿足條件的結(jié)果
- plaintext——將命令的結(jié)果去除ANSI顏色
- wc——按行統(tǒng)計(jì)輸出結(jié)果
后臺異步任務(wù)
當(dāng)線上出現(xiàn)偶發(fā)的問題貌矿,比如需要watch某個條件,而這個條件一天可能才會出現(xiàn)一次時罪佳,異步后臺任務(wù)就派上用場了逛漫,詳情請參考這里
- 使用 > 將結(jié)果重寫向到日志文件,使用 & 指定命令是后臺運(yùn)行赘艳,session斷開不影響任務(wù)執(zhí)行(生命周期默認(rèn)為1天)
- jobs——列出所有job
- kill——強(qiáng)制終止任務(wù)
- fg——將暫停的任務(wù)拉到前臺執(zhí)行
- bg——將暫停的任務(wù)放到后臺執(zhí)行
Web Console
通過websocket連接Arthas酌毡。
其他特性
參考文章:
1克握、官網(wǎng):https://alibaba.github.io/arthas
2、web Console踩坑:https://blog.csdn.net/gaoyib6/article/details/77201711