1、配置java环境:
Windows:
set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_153
set CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
set Path=%JAVA_HOME%\bin;
linux临时环境:
export JAVA_HOME=/usr/share/jdk1.7.0_29
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
2、如果发现arthas无法访问进程号,在执行完java -jar arthas-boot.jar 12345,后面加上12345进程号,手动找到需要监控的java进程
tips:对于linux进程查找使用 jps -lmv|grep 组件名 可精确查找到对应的自己的进程,比ps -ef好用
对于windows 使用netstat -ano|findstr 8023查找8023端口的进程
,或者使用jps -l
- thread -b 命令查看直接定位到死锁信息
- jad 命令直接反编译 class
- trace com.UserController getUser查看耗时信息
- monitor -c 5 com.UserServiceImpl get 统计耗时信息
- watch 查看输入输出参数以及异常等信息
-
-
watch demo.MathGame primeFactors “{params,returnObj}” -x 2
-
A.
如果有个私有成员变量,可以这么使用查看其变量值,静态变量可以使用getstatic查看
watch *.类名 方法名 “target.变量名” -x 5(表示调用方法前后该变量的前后值)
B.* 过滤参数中符合条件的
watch demo.MathGame primeFactors ‘params[0].{? #this.certificateNumber==“1231243”}’ -x 5
watch 高级用法:https://github.com/alibaba/arthas/issues/71
-
A.
如果有个私有成员变量,可以这么使用查看其变量值,静态变量可以使用getstatic查看
- stack命令查看方法的调用信息
参考:
- https://blog.csdn.net/u013735734/article/details/102930307
- https://alibaba.github.io/arthas/options.html
arthas问题解决
1.java.io.IOException: well-known file is not secure
[ERROR] Start arthas failed, exception stack trace:
java.io.IOException: well-known file is not secure
at sun.tools.attach.LinuxVirtualMachine.checkPermissions(Native Method)
at sun.tools.attach.LinuxVirtualMachine.<init>(LinuxVirtualMachine.java:117)
at sun.tools.attach.LinuxAttachProvider.attachVirtualMachine(LinuxAttachProvider.java:78)
at com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:250)
at com.taobao.arthas.core.Arthas.attachAgent(Arthas.java:85)
at com.taobao.arthas.core.Arthas.<init>(Arthas.java:28)
at com.taobao.arthas.core.Arthas.main(Arthas.java:123)
解决方法:切换为执行java程序的用户启动arthas