使用Arthas工具分析CPU使用率高的问题
当遇到 Java 性能问题时,如 Java CPU 飙升(使用率100%到200%)、负载突升等问题,大多数常见问题你都可以使用 Arthas 轻松定位。
使用方法:
将arthas附件包解压后放到容器/mservice/logs目录下
步骤1. 执行 /jdk/bin/java -jar arthas-boot.jar 1 (容器里的java进程号PID默认为1)
步骤2. 执行thread命令查看CPU排序,定位哪个线程耗CPU
步骤3. 执行thread <线程号> ,下图中执行thread 12,从12号线程堆栈里面获取是什么堆栈导致的CPU高。还可以根据堆栈里的traceid在苍穹monitor里查找具体是什么功能消耗的CPU资源,然后进一步分析问题原因。
注:有时应用服务会卡死,重启后会重现问题,完全卡死时无法收集。
如果苍穹进程不能挂载Arthas,或者处于CPU严重超载时,我们建议通过如下shell命令在容器里获取最耗时的线程:
# top -b -d2 -n3 -H -p 1 | grep 'top -' -A 17 > slow.log && /jdk/bin/jstack -l 1 >> slow.log
间隔2秒,获取3次进程1的前10个最耗费CPU的线程信息,并与线程堆栈一起输出到文件slow.log中,然后通过线程号找到最耗费CPU的线程。
---------------------------------------------------------------------------------------------------------
Arthas 只是一个 java 程序,所以可以直接用 java -jar 运行。运行时或者运行之后要选择要监测的 Java 进程。
(1)运行方式1,先运行,在选择 Java 进程 PID
/jdk/bin/java -jar arthas-boot.jar
# 选择进程(输入[ ]内编号(不是PID) 回车)
[INFO] arthas-boot version: 3.1.4
[INFO] Found existing java process, please choose one and hit RETURN.
[1]: 11616 com.Arthas
[2]: 8676
[3]: 16200 org.jetbrains.jps.cmdline.Launcher
[4]: 21032 org.jetbrains.idea.maven.server.RemoteMavenServer
(2)运行方式2,运行时选择 Java 进程 PID
/jdk/bin/java -jar arthas-boot.jar [PID]
使用Arthas工具分析CPU使用率高的问题
本文2024-09-23 01:14:53发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-144730.html