Linux環境下使用Arthas排查cpu飆高問題


生產環境cpu飆高的原因

linux命令查看top -c

image-20211111123948754

1.CAS修改值失敗,沒有控制自旋次數,導致一直自旋不斷重試,非常消耗cpu資源

2.雲服務器被黑客攻擊,植入了挖礦程序:端口不能夠被外網訪問

3.程序死循環:控制循環次數

4.服務器被DDOS攻擊:限流、ip黑名單、圖形驗證碼

cpu飆高如何排除

通過工具找到進程,再找到線程,根據線程再定位到業務代碼

使用到線程池創建線程的時候建議配置線程池名稱,方便后期可以定位到是哪個業務相關的線程

使用arthas排查cpu飆高問題

curl -O https://arthas.gitee.io/arthas-boot.jar

啟動

用java命令直接啟動

[root@localhost ~]# java -jar arthas-boot.jar 
[INFO] arthas-boot version: 3.3.3
[INFO] Can not find java process. Try to pass <pid> in command line.
Please select an available pid.

但是這里啟動失敗了,這是因為arthas在啟動時會檢測本機運行的jvm進程,然后讓用戶選擇需要綁定的進程,后面的操作都是針對選定的進程的。

這里我先啟動一個java應用,然后再啟動arthas。

[root@localhost ~]# java -jar arthas-boot.jar 
[INFO] arthas-boot version: 3.3.3
[INFO] Found existing java process, please choose one and input the serial number of the process, eg : 1. Then hit ENTER.
* [1]: 2467 jvm-0.0.1-SNAPSHOT.jar

下面就列出了本機正在運行的java進程,等待用戶輸入,這里輸入1選擇第一個進程然后回車。如果是第一次啟動需要下載一些必要的文件,等待下載完成即可。

[root@localhost arthas]# java -jar arthas-boot.jar 
[INFO] arthas-boot version: 3.3.3
[INFO] Found existing java process, please choose one and input the serial number of the process, eg : 1. Then hit ENTER.
* [1]: 2467 jvm-0.0.1-SNAPSHOT.jar
1
[INFO] arthas home: /usr/local/arthas
[INFO] Try to attach process 2467
[INFO] Attach process 2467 success.
[INFO] arthas-client connect 127.0.0.1 3658
  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.                           
 /  O  \ |  .--. ''--.  .--'|  '--'  | /  O  \ '   .-'                          
|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-.                          
|  | |  ||  |\  \    |  |   |  |  |  ||  | |  |.-'    |                         
`--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----'                          
                                                                                

wiki      https://alibaba.github.io/arthas                                      
tutorials https://alibaba.github.io/arthas/arthas-tutorials                     
version   3.3.3                                                                 
pid       2467                                                                  
time      2020-06-22 03:02:31                                                   

查看cpu最高的三個線程

thread -n 3


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM