• windows系统下排查Java项目cpu过高原因


    问题描述:

      我们公司是java做服务端,做的电脑客户端软件,最近一次更新,测试时发现之前cpu一直是在4-5使用率,新版本有时会飙升到30%~40%,肯定是存在问题

    使用工具:

     步骤1:定位项目进程

        打开任务管理

      步骤2:使用jdk自带的一个jstack命令导出线程日志

          命令: jstack 88400 > D:/jstack/cc.log   88400:任务管理里的项目PID,右侧是将进程保存到本地,供后续排查问题

        

        注意:

        1、文件夹要先创建好,

        2、如果出现拒绝访问,则需要使用管理员身份运行cmd

        

           3、如果出现jstack不是内部或外部命令,则说明jdk的环境变量设置有问题,在这就不多说了

      步骤3:使用Process Explorer工具,下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/process-explorer

      找到步骤一中的PID对应的进程,右键Properties...选项

       找到CPU使用率高的TID,通过jstack工具导出的信息中线程TID是十六进制的,需要转换进制

     将16进制到之前导出的线程记录文件中查询,可以看到我自定义的线程名以及代码位置,可以追踪到具体业务逻辑进行排查问题

      我之前的问题是开了线程池处理一个队列里的数据,当队列无数据时没有休眠等待,导致线程一直再跑,CPU飙升。

        

  • 相关阅读:
    nginx
    mysql
    intelij maven
    redis命令大全
    绑定touch事件后click无效,vue项目解决棒法
    新的用法
    img
    vuedragable
    自己总结
    vuex的项目在id中不能运行
  • 原文地址:https://www.cnblogs.com/guanyuehao0107/p/15464811.html
Copyright © 2020-2023  润新知