• 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飙升。

        

  • 相关阅读:
    我的云之旅hadoop集群(3)
    动态域名绑定
    我的云之旅hadoop集群集成Hive(4)
    Axis2实践
    PHP Apache Mysql搭建
    JavaEE程序员必读图书大推
    我的云之旅hadoop集群集成Hbase集群(5)
    本博客总排名进入前100
    关系数据库及NoSql图书大推荐
    Last_IO_Errno: 1032
  • 原文地址:https://www.cnblogs.com/guanyuehao0107/p/15464811.html
Copyright © 2020-2023  润新知