日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

使用arthas排查cpu飙高问题

發(fā)布時(shí)間:2024/9/27 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用arthas排查cpu飙高问题 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.



文章目錄

            • 1. 下載arthas
            • 2. 啟動(dòng)
            • 3. 選擇指定jvm進(jìn)程
            • 4. 篩選線程
            • 5. 日志分析

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

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

2. 啟動(dòng)

直接用java -jar的方式啟動(dòng):

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

說(shuō)明:由于arthas監(jiān)控的是jvm的進(jìn)程,因此,啟動(dòng)arthas之前需要提前啟動(dòng)jvm的進(jìn)程

先運(yùn)行咱們的測(cè)試類(lèi)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進(jìn)程

然后,arthas就會(huì)提示,已經(jīng)找到服務(wù)器上的關(guān)于jvm的進(jìn)行列表,請(qǐng)選擇進(jìn)行編號(hào),然后arthas就會(huì)對(duì)你指定的jvm進(jìn)程進(jìn)行監(jiān)控,并將監(jiān)控日志輸出到目錄中。

top -c

4. 篩選線程

查詢(xún)當(dāng)前進(jìn)行中,哪個(gè)線程占用CPU比較高呢

排列出當(dāng)前進(jìn)程前3個(gè)占用cpu較高的線程

thread -n 3

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 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類(lèi)中導(dǎo)致的,進(jìn)一步查看這個(gè)類(lèi)中“錄單-thread”的處理業(yè)務(wù)
②"arthas-command-execute" Id=23 cpuUsage=1.06%,這個(gè)是arthas監(jiān)控工具。

總結(jié)

以上是生活随笔為你收集整理的使用arthas排查cpu飙高问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。