Linux环境下使用Arthas排查cpu飙高问题

Posted 404 Not Found

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux环境下使用Arthas排查cpu飙高问题相关的知识,希望对你有一定的参考价值。

生产环境cpu飙高的原因

linux命令查看top -c

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

以上是关于Linux环境下使用Arthas排查cpu飙高问题的主要内容,如果未能解决你的问题,请参考以下文章

记一次线上机器CPU飙高的排查过程

linux cpu飙高原因排查(有手就行)

阿里Java诊断工具 arthas - 排查线上环境内存使用过大线程cpu使用率高问题

阿里Java诊断工具 arthas - 排查线上环境内存使用过大线程cpu使用率高问题

Linux性能分析Top

程序员不可不知的Linux性能工具