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占用率过高的原因。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM