zoukankan      html  css  js  c++  java
  • Java项目模块占用CPU过高问题分析

    背景:近期一个模块(暂且称为A)新上了一个需求,改动了些代码,在测试环境部署之后,该模块系统CPU使用率动不动就飙升到90%,甚至200%,严重影像其他业务执行。

     

    排查过程
    1.使用top查看当前CPU使用情况,找到CPU使用率高的Java进程PID 104234

    2.根据进程PID,找到对应的服务

    ps -ef | grep 104234

    确认为之前修改过的模块A

     
    3.查看当前进程PID下所有的线程占用CPU情况,得到占用率最高线程PID 16466
    top -H -p 104234

     将这个线程PID转换成16进制,转换后为4052

     4.使用jstack命令将进程PID 104234信息导出到文件104234.log

    jstack 104234 > 104234.log 

    在104234.log中查找4052

     可以找到项目中具体的执行线程,接下来就是看该线程的执行逻辑是怎样的了,在idea中全局搜索该线程名,找到该线程的具体使用场景,进一步排查代码中可能导致CPU占用率过高的原因。

    技术交流QQ群:579949017 或者添加个人微信:xieya0126 加入微信交流群
  • 相关阅读:
    【竞赛笔记】飞思卡尔智能车竞赛
    【实习笔记】智能广场健身设备总结
    RabbitMQ之安装
    数据结构与算法之队列
    joda-time时间操作组件
    JavaScript中的跨域问题
    数据结构与算法之链表
    Jedis集成到项目中
    ICMP协议和ping命令
    jedis的使用
  • 原文地址:https://www.cnblogs.com/dsxie/p/13490160.html
Copyright © 2011-2022 走看看