Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率
https://arthas.aliyun.com/doc/quick-start.html
1. 启动 arthas
curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar
执行该程序的用户需要和目标进程具有相同的权限。比如以admin用户来执行:sudo su admin && java -jar arthas-boot.jar 或 sudo -u admin -EH java -jar arthas-boot.jar。
如果 attach 不上目标进程,可以查看~/logs/arthas/ 目录下的日志。
如果下载速度比较慢,可以使用 aliyun 的镜像:java -jar arthas-boot.jar --repo-mirror aliyun --use-http
java -jar arthas-boot.jar -h 打印更多参数信息。
2. 选择应用 java 进程:
java -jar arthas-boot.jar
[INFO] JAVA_HOME: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-1.el7_9.x86_64/jre
[INFO] arthas-boot version: 3.6.7
[INFO] Found existing java process, please choose one and input the serial number of the process, eg : 1. Then hit ENTER.
* [1]: 17153 /home/hcc/lib/transfer-app.jar
[2]: 25827 /home/hcc/lib/hcc-car-app.jar
[3]: 11171 com.alibaba.otter.canal.admin.CanalAdminApplication
[4]: 10405 /home/hcc/lib/file-app.jar
进程是几(前面序号),则输入 几,再输入回车/enter。Arthas 会 attach 到目标进程上,并输出日志
3.使用trace命令排查线上服务平均响应时间太长问题
具体命令格式:trace [全限定类名][类中的方法名]
例: trace com.hckj.iot.hcc.modular.project.service.impl.ProjectServiceImpl page