Arthas是Alibaba在2018年9月开源的Java诊断工具,支持JDK6+,采用命令行交互模式,可以方便的定位和诊断线上程序运行问题。
下载arthas-boot.jar工具包,java jar 运行,启动后,可以识别机器上所有的Java进程,如下:
[root@pre248 arthas]# java -jar arthas-boot.jar
[INFO] arthas-boot version: 3.4.5
[INFO] Found existing java process, please choose one and input the serial number of the process, eg : 1. Then hit ENTER.
* [1]: 6131 server-admin.war
[2]: 16103 xxl-job-admin-2.2.0.jar
[3]: 49690 /opt/jpom/lib/agent-2.7.0.jar
[4]: 63772 server-admin_prd.war
选择java进程序号2,进入进程信息操作:
dashbord查看大盘:
tread命令查看线程详细情况:
thread pid可以查看线程堆栈信息:
thread -b查看线程死锁:
jad加类的全名,可以反编译,查看线上代码:
ognl命令查看系统变量的值,修改变量的值
ognl '@全路径类@静态属性名'
查看静态属性变量的值:
修改静态属性变量的值:
通过反射获取属性值,然后设置新值
ognl "#c=@com.learn.test.learndemo.controller.TestController@class,#f=#c.getDeclaredField('arg0'),#f.setAccessible(true),#f.set(#c,'haha')"
不难发现,变量的值已成功修改
其他命令查看arthas官方文档
github经常打不开,另附离线文档下载地址:
https://download.csdn.net/download/David_bdqn/59509680