生产CPU 100% 问题排查解决方案

生产CPU 100% 问题排查解决方案


不知道大家在工作中有没有遇到过 线上代码CPU突然飙高,然后就会持久不下的情况?

如果有呢,大家肯定有解决方案了,如果没有的话可以来看看本篇教程,面试的时候可以吹一吹哦~

先给大家列几项可能Cpu 飙高的几种可能:

  • 磁盘占用满,应用无法卡住无法运行(情况及其常见!!!我和朋友们都遇到过!!)

    这种情况要怎么解决呢? 在服务器中 输入 df -h 命令 查看磁盘空间是否是100%状态

    如果是100%状态,请删除一些log日志文件 / 删除无用的备份文件即可

  • 程序中出现while死循环,没有设置中断条件
  • 递归出现死循环,没有触发中断条件
  • 程序设置的堆大小处在Full GC边缘,导致疯狂的Full GC 100%
  • 其他

死循环导致CPU飙高

其中 第 2、3点是我们程序员人为的错误,这个可以在日志中找到相关的触发100%线程:

首先,我们得创造一个造成CPU100%的机会,here we go !

我们光速新建一个springboot 项目,然后光速写一个接口,流程是:

用户 -> 接口 -> 后端代码异常,导致cpu飙满

/**
 * @author 隔壁老王
 * @date 2021-03-05 14:51:54
 * @description:
 */
@RestController
public class TestController {
   
   


    @GetMapping("hi")
    public String hi(){
   
   
        cpu100();
        return "隔壁老王";
    }


    public static void cpu100(){
   
   
        while(true){
   
   
            new Runnable() {
   
   
                @Override
                public void run() {
   
   
                    while(true){
   
   
                        for (int j = 999; j < 999999; j++) {
   
   
                            System.out.println(j * j * j * j * j);
                        }
                    }
                }
            }.run();
        }
    }
}

然后呢,我们maven打包(mvn clean package)发到服务器中,暂时用笨办法,不使用jkins / docker 部署,直接使用java -jar

开搞!项目启动!

然后是时候和服务器 say hi了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-siC4KEj7-1614932133559)(/Users/wangshuai/Library/Application Support/typora-user-images/image-20210305145919144.png)]

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值