1.java -jar Arthas-boot.jar启动Arthas选中需要监控的java项目
2.Arthas启动成功之后进入命令行模式
3.下面是命令
-
help 帮助
-
dashboard jvm内存仪表盘
-
thread 1 | grep 'main(' 查询线程的栈信息 grep搜索方法名字
-
sc -d *类名 可以不加-d 是匹配符 可以写类全路径不需要 可以看到这个类的 加载信息,此方法非常重要可以看到jar冲突
类加载器加载多少个相同类名的版本 -
sm -d *类名 主要是查看方法 和sc差不多
-
jad 全类 例如 jad com.demo.Main 可以反编译此类
jad --source-only com.example.demo.arthas.user.UserController -
watch 全类名 方法名 returnObj 例如 watch demo.MathGame primeFactors returnObj 可以一直监控指定方法调用信息通过
watch命令可以查看函数的参数/返回值/异常信息。 -
sysprop 可以打印所有的System Properties信息。也可以指定单个key: sysprop java.version 也可以通过grep来过滤:
sysprop | grep user 可以设置新的value: sysprop testKey testValue -
sysenv sysenv 命令可以获取到环境变量。和sysprop命令类似。
-
jvm jvm 命令会打印出JVM的各种详细信息。
-
ognl '@java.lang.System@out.println("hello ognl")' 执行被监控项目的方法
还可以通过-x参数控制返回值的展开层数。比如:
ognl --classLoaderClass org.springframework.boot.loader.LaunchedURLClassLoader -x 2
@com.example.demo.arthas.user.UserController@logger
执行多行表达式,赋值给临时变量,返回一个List
ognl '#value1=@System@getProperty("java.home"), #value2=@System@getProperty("java.runtime.name"), {#value1,
#value2}'
其他更复杂的参考
OGNL特殊用法请参考: (https://github.com/alibaba/arthas/issues/71)
OGNL表达式官方指南: (https://commons.apache.org/proper/commons-ognl/language-guide.html)
4.退出Arthas监控
用 exit 或者 quit 命令可以退出Arthas。
退出Arthas之后,还可以再次用 java -jar arthas-boot.jar 来连接。
彻底退出Arthas
exit/quit命令只是退出当前session,arthas server还在目标进程中运行。
想完全退出Arthas,可以执行 stop 命令。
更多使用方法请参考官网https://arthas.aliyun.com/doc/arthas-tutorials.html?language=cn&id=arthas-advanced
网友评论