1.java -jar Arthas-boot.jar啟動Arthas選中需要監(jiān)控的java項目
2.Arthas啟動成功之后進入命令行模式
3.下面是命令
help 幫助
dashboard jvm內(nèi)存儀表盤
thread 1 | grep 'main(' 查詢線程的棧信息 grep搜索方法名字
sc -d *類名 可以不加-d 是匹配符 可以寫類全路徑不需要 可以看到這個類的 加載信息,此方法非常重要可以看到j(luò)ar沖突
類加載器加載多少個相同類名的版本sm -d *類名 主要是查看方法 和sc差不多
jad 全類 例如 jad com.demo.Main 可以反編譯此類
jad --source-only com.example.demo.arthas.user.UserControllerwatch 全類名 方法名 returnObj 例如 watch demo.MathGame primeFactors returnObj 可以一直監(jiān)控指定方法調(diào)用信息通過
watch命令可以查看函數(shù)的參數(shù)/返回值/異常信息。sysprop 可以打印所有的System Properties信息。也可以指定單個key: sysprop java.version 也可以通過grep來過濾:
sysprop | grep user 可以設(shè)置新的value: sysprop testKey testValuesysenv sysenv 命令可以獲取到環(huán)境變量。和sysprop命令類似。
jvm jvm 命令會打印出JVM的各種詳細信息。
ognl '@java.lang.System@out.println("hello ognl")' 執(zhí)行被監(jiān)控項目的方法
還可以通過-x參數(shù)控制返回值的展開層數(shù)。比如:
ognl --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader -x 2
@com.example.demo.arthas.user.UserController@logger
執(zhí)行多行表達式,賦值給臨時變量,返回一個List
ognl '#value1=@System@getProperty("java.home"), #value2=@System@getProperty("java.runtime.name"), {#value1,
#value2}'
其他更復(fù)雜的參考
OGNL特殊用法請參考: (https://github.com/alibaba/arthas/issues/71)
OGNL表達式官方指南: (https://commons.apache.org/proper/commons-ognl/language-guide.html)
4.退出Arthas監(jiān)控
用 exit 或者 quit 命令可以退出Arthas。
退出Arthas之后,還可以再次用 java -jar arthas-boot.jar 來連接。
徹底退出Arthas
exit/quit命令只是退出當前session,arthas server還在目標進程中運行。
想完全退出Arthas,可以執(zhí)行 stop 命令。
更多使用方法請參考官網(wǎng)https://arthas.aliyun.com/doc/arthas-tutorials.html?language=cn&id=arthas-advanced