通过Arthas排查Java程序CPU占用过高问题

通过Arthas排查Java程序CPU占用过高问题

需要工具包:arthas-packaging-3.2.0-bin.zip

模拟问题

使用如下代码制造一个CPU占用100%的情况

 /**
     * 制造一个死循环,实现cpu100%
     */
    @RequestMapping("/lock")
    public void lock(){
        System.out.println("开始死锁操作。。。。");
        StringBuffer stringBuffer = new StringBuffer();
        while(true){
            String uuid = UUID.randomUUID().toString();
        }
    }

通过Arthas排查Java程序CPU占用过高问题_第1张图片

这是一个SpringBoot的应用,通过使用命令curl http://xxx:xxx/lock,即可触发

排查步骤

  • 上传arthas-packaging-3.2.0-bin.zip到服务器,创建目录arthas并将zip包拷贝到该目录下,解压

  • 使用top命令,查看当前CPU的情况,记录下占用率最高的进程pid

通过Arthas排查Java程序CPU占用过高问题_第2张图片

  • 下记录下cpu占用过高的pid(本例中是2864)

  • 执行java -jar arthas-boot.jar

在这里插入图片描述

  • 输入1(序号),根据实际情况选择对应的序号,会进入arthas命令行的执行程序中

通过Arthas排查Java程序CPU占用过高问题_第3张图片

  • 输入thread -n 3会列举出当前三个占用CPU最高的线程,根据图中可以定位到具体的业务代码行数

通过Arthas排查Java程序CPU占用过高问题_第4张图片

  • 除此之外,也可以使用dashboard命令查看当前的Java程序运行情况

通过Arthas排查Java程序CPU占用过高问题_第5张图片

你可能感兴趣的:(运维)