使用arthas排查cpu飙高问题

https://blog.csdn.net/weixin_40816738/article/details/123308455

https://blog.csdn.net/alisystemsoftware/article/details/110393949

 

官方文档:https://arthas.aliyun.com/doc

1. 下载arthas
curl -O https://arthas.aliyun.com/arthas-boot.jar
1


2. 启动
直接用java -jar的方式启动:

java -jar arthas-boot.jar --repo-mirror aliyun --use-http
1


说明:由于arthas监控的是jvm的进程,因此,启动arthas之前需要提前启动jvm的进程

先运行咱们的测试类Java04

java Java04
1
演示CPU飙高代码

public class Java04 {

public static void main(String[] args) {
new Thread(()->{
while (true){
System.out.println("1111111");
}
},"录单-thread").start();
}
}
1
2
3
4
5
6
7
8
9
10
3. 选择指定jvm进程
然后,arthas就会提示,已经找到服务器上的关于jvm的进行列表,请选择进行编号,然后arthas就会对你指定的jvm进程进行监控,并将监控日志输出到目录中。

 

top -c
1


4. 筛选线程
查询当前进行中,哪个线程占用CPU比较高呢

排列出当前进程前3个占用cpu较高的线程

thread -n 3
1


5. 日志分析
[arthas@26289]$ thread -n 3
"录单-thread" Id=8 cpuUsage=92.79% deltaTime=189ms time=52158ms RUNNABLE (in native)
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.java:326)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
at java.io.PrintStream.write(PrintStream.java:482)
at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291)
at sun.nio.cs.StreamEncoder.flushBuffer(StreamEncoder.java:104)
at java.io.OutputStreamWriter.flushBuffer(OutputStreamWriter.java:185)
at java.io.PrintStream.newLine(PrintStream.java:546)
at java.io.PrintStream.println(PrintStream.java:807)
at Java04.lambda$main$0(Java04.java:6)
at Java04$$Lambda$1/471910020.run(Unknown Source)
at java.lang.Thread.run(Thread.java:748)

"arthas-command-execute" Id=23 cpuUsage=1.06% deltaTime=2ms time=10ms RUNNABLE
at sun.management.ThreadImpl.dumpThreads0(Native Method)
at sun.management.ThreadImpl.getThreadInfo(ThreadImpl.java:448)
"VM Periodic Task Thread" [Internal] cpuUsage=0.25% deltaTime=0ms time=58ms
[arthas@26289]$

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
从日志可以分析出:

①"录单-thread" Id=8 cpuUsage=92.79% ,是在Java04类中导致的,进一步查看这个类中“录单-thread”的处理业务
②"arthas-command-execute" Id=23 cpuUsage=1.06%,这个是arthas监控工具。

posted on   四海骄阳  阅读(291)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
· 全程使用 AI 从 0 到 1 写了个小工具

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

了解更多