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

posted @ 2020-08-12 13:48  IT咸鱼圈  阅读(710)  评论(0编辑  收藏  举报