通过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();
        }
    }

在这里插入图片描述

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

排查步骤

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

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

在这里插入图片描述

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

  • 执行java -jar arthas-boot.jar

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值