排查生产环境下CPU飙高的原因

一、CPU飙高产生的原因

1、CAS修改值失败,没有控制自旋次数,导致一直自旋不断重试,非常消耗cpu资源

2、云服务器被黑客攻击,植入了挖矿程序:端口不能够被外网访问

3、程序死循环:控制循环次数

4、服务器被DDOS攻击:限流、ip黑名单、图形验证码

二、模拟生产环境cpu飙高

(1)模拟飙高的代码,该代码不需要包名

public class Test {

    public static void main(String[] args) {
        new Thread(()->{
           while (true)
               System.out.println("测试测试");
        },"TestThread").start();
    }

}

(2)上传Test.java文件到Linux服务器下,/usr/local

 (3)编译Test.java并运行

执行命令:javac Test.java  

运行Test.class文件

执行命令:java -cp . Test

三、使用Arthas工具排查

下载arthas-boot.jar,然后用java -jar的方式启动:

执行命令:curl -O https://arthas.aliyun.com/arthas-boot.jar

启动:java -jar arthas-boot.jar

执行命令:dashboard

 从图中能很清楚的看到TestThread线程 cpu占比80.22%

也可以用命令:thread -n 3

根据查询出来的线程名称去定位实际业务代码

点击 Arthas命令 查看其他命令。

以上就是Linux环境下排查CPU飙高的方法。

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
服务器 CPU 占用过高的问题,一般有以下几种可能的原因: 1. 系统负载过高:可能是由于系统运行的进程或服务过多,导致 CPU 资源被占用过多。可以使用 top 命令查看当前系统运行的进程,并根据需要停止或调整相应的进程。 2. 程序代码问题:可能是开发的程序代码存在性能问题,导致 CPU 占用过高。可以使用工具对程序进行性能分析,找出性能瓶颈并进行优化。 3. 数据库查询问题:可能是数据库的查询语句存在问题,导致 CPU 资源被消耗过多。可以使用慢查询日志或者性能分析工具对查询进行分析,并进行优化。 4. 病毒或恶意软件感染:可能是服务器被病毒或恶意软件感染,导致 CPU 占用过高。可以使用杀毒软件对服务器进行检查和清理。 针对 CPU 占用过高的问题,可以尝试以下解决方法: 1. 调整系统资源分配:可以通过调整系统负载均衡、资源分配策略等方式,优化系统资源的使用效率,避免过多的 CPU 占用。 2. 优化程序代码:可以对程序代码进行优化,例如减少无用循环、缓存热点数据、使用异步处理等方式,减少 CPU 占用。 3. 优化数据库查询:可以使用索引、优化查询语句、减少冗余数据等方式,优化数据库查询性能,减少 CPU 占用。 4. 安装杀毒软件:可以安装杀毒软件对服务器进行检查和清理,避免病毒或恶意软件感染导致 CPU 占用过高。 需要注意的是,针对 CPU 占用过高的问题,需要根据具体情况进行分析和解决。如果无法定位问题,可以考虑寻求专业的技术支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值