使用arthas排查cpu飙高问题
生活随笔
收集整理的這篇文章主要介紹了
使用arthas排查cpu飙高问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一
- 1. 下載arthas
- 2. 啟動
- 3. 選擇指定jvm進程
- 4. 篩選線程
- 5. 日志分析
一
官方文檔:https://arthas.aliyun.com/doc
1. 下載arthas
curl -O https://arthas.aliyun.com/arthas-boot.jar2. 啟動
直接用java -jar的方式啟動:
java -jar arthas-boot.jar --repo-mirror aliyun --use-http說明:由于arthas監控的是jvm的進程,因此,啟動arthas之前需要提前啟動jvm的進程
先運行咱們的測試類Java04
java Java04演示CPU飆高代碼
public class Java04 {public static void main(String[] args) {new Thread(()->{while (true){System.out.println("1111111");}},"錄單-thread").start();} }3. 選擇指定jvm進程
然后,arthas就會提示,已經找到服務器上的關于jvm的進行列表,請選擇進行編號,然后arthas就會對你指定的jvm進程進行監控,并將監控日志輸出到目錄中。
top -c4. 篩選線程
查詢當前進行中,哪個線程占用CPU比較高呢
排列出當前進程前3個占用cpu較高的線程
thread -n 35. 日志分析
[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 RUNNABLEat 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]$從日志可以分析出:
①"錄單-thread" Id=8 cpuUsage=92.79% ,是在Java04類中導致的,進一步查看這個類中“錄單-thread”的處理業務
②"arthas-command-execute" Id=23 cpuUsage=1.06%,這個是arthas監控工具。
總結
以上是生活随笔為你收集整理的使用arthas排查cpu飙高问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 秒杀场景_同步秒杀分析和实战_01
- 下一篇: ‘yarn‘ 不是内部或外部命令,也不是