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

相关推荐
Irene19911 分钟前
在 Linux 命令中,- 开头的东西几乎都是“参数/选项“,用来告诉命令“具体怎么做“
linux
IT大白鼠2 分钟前
Linux账号和权限管理
linux·运维·服务器
zzzyyy5384 分钟前
Linux 下 从 ELF 可执行文件 到 进程虚拟地址空间的加载、映射与运行底层原理
linux·运维
MXsoft61812 分钟前
**多协议接入****≠****全栈覆盖:设备监控盲区的真相与破解之道**
运维
厚皮龙16 分钟前
使用 SSH 密钥上传 GitHub 仓库流程
运维·ssh·github
lifewange42 分钟前
Nginx + Kafka 可编程精细控制 完整版(可直接落地运行)
运维·nginx·kafka
hweiyu001 小时前
Linux命令:ip6tables
linux·运维·服务器
数字化顾问1 小时前
(122页PPT)企业数字化IT架构蓝图规划设计方案(附下载方式)
java·运维·架构
ITyunwei09871 小时前
灾难恢复与业务连续性:如何确保天灾人祸下,业务也能“屹立不倒”?
运维·服务器
Promise微笑2 小时前
2026电缆故障定位仪:缆故障定位仪精准选型与高效避坑指南
运维·人工智能·重构