由于项目比较老,以前基本没有加日志,有问题不好排查,不过好在有阿里开源的神器Arthas(阿尔萨斯)。
可以在线安装,也可以把jar包下载到本地再上传到服务器。
相关下载操作请参阅:Arthas Install
- 使用Arthas前用命令
ps -ef|grep java
查看需要监控诊断的java应用进程号 - 启动Arthas:
java -jar arthas-boot.jar
- 输入对应进程号的数字序号,比如图中2198134则输入1
此时就可以在通过输入不同的命令来执行操作了
dashboard
:显示当前系统的实时数据面板
如果我需要查看某个方法是否执行,执行情况如何:
trace 全类名 方法名
监控某个类下某个方法,查看整个方法的执行情况,会显示方法中各个调用链路的执行情况和耗时,可查看某个数据库操作耗时,便于优化。
如果我需要查看某个方法的入参是啥,返回值是啥:
watch 全类名 方法名 "{params,returnObj}" -x 2 -b
(-x 2)输出结果的属性遍历深度为2,默认为 1
(-b)方法调用前观察
查看导致死锁的线程:
thread -b
使用完毕后执行:
stop 或 执行reset后再执行quit
重置掉所有做过的增强类,关闭Arthas服务端,所有Arthas客户端全部退出(监听多个Java应用时)
Arthas利用了Java Agent技术,通过java.lang.instrument.Instrumentation
实现了对正在运行的Java应用程序的类加载过程进行干预和字节码增强,有一定的性能影响,生产慎用!
更多操作请移步官网:Arthas官网:https://arthas.aliyun.com/
你已经是个成熟的程序员了,要学会自己看官方文档~