在Linux中tomcat占用CPU过高可以通过打印CPU文件来解决

第一步,查看异步处理的多线程程序,是不是哪个程序死锁了或者一直运行,不释放。若没有发现程序发生死循环,则说明不是这个问题导致的。

第二步,若不是异步处理的多线程程序导致tomcat占用CPU过高,则可以使用命令打印堆栈,得到所有的运行线程。

进入/usr/local/jdk1.7.0_80/bin文件夹打印堆栈内容

jstack在jdk1.8版本中不可用,只能使用在jdk1.7版本中

命令:cd /usr/local/jdk1.7.0_80/bin

jstack pid > /usr/local/test.stack

第三步,在shell中使用命令查找是哪几个线程在占用CPU过高,占用CPU时间过长。

命令:top -c

注意:点击"shift+M",按照内存大小排序;点击"shift+P",按照CPU大小排序。

第四步,得到占用CPU过高,占用CPU时间过长的线程的PID值,然后使用命令将PID值转成十六进制。

命令:printf "%x\n" PID

第五步,通过线程PID值转换的十六进制值在刚刚打印出来的堆栈文件中查找具体的线程。找到具体的线程之后,就可以看到具体出问题的代码行,然后在源码中查找一下,看看是否存在有一个死循环。若在源码中存在有一个死循环,则修改代码使源码不存在死循环即可。

相关推荐
lucybean015 分钟前
食品加工行业污水处理曝气装置采购避坑与合规筛选指南
运维
harmony&10 分钟前
DevOps进阶:SonarQube 代码审计与 Harbor 镜像仓库实战
运维·devops
Neighbor_OldY25 分钟前
CSRF跨站请求伪造攻击检测与应急处置实战:伪造请求识别与防护落地
运维·安全·web安全
生活爱好者!31 分钟前
NAS能批量做短视频?docker部署MoneyPrinterTurbo
运维·docker·容器
ch3nyuyu33 分钟前
驱动第三阶段
linux
考虑考虑34 分钟前
Redis8.8新特性
运维·redis·后端
云飞云共享云桌面41 分钟前
钣金制造研发优化:不采购传统工作站,实现 SolidWorks 团队共用服务器开展三维建模
运维·服务器·网络·数据库·3d·制造
YUJIANYUE1 小时前
AspFox-类NetBox的ASP+Access迷你单文件服务器V202609
运维·服务器
harmony&1 小时前
DevOps 实战:从概念到 CI/CD 持续交付全流程
运维·ci/cd·devops
皮卡丘不断更1 小时前
视频自动剪、内容自动发:我的多平台营销自动化工作台
大数据·运维·自动化·视频剪辑·营销自动化·多平台运营·creatorhub