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

相关推荐
在这habit之下15 小时前
nginx介绍与简单操作
运维·nginx
小小测试开发16 小时前
JMeter 自动化实战:自动生成文件并传参接口的完整方案
运维·jmeter·自动化
python百炼成钢16 小时前
13.RTC实时时钟
linux·stm32·单片机·嵌入式硬件·实时音视频
门思科技16 小时前
LoRaWAN通信协议详解:架构、加密机制与核心应用
运维·服务器·网络·嵌入式硬件·物联网
乐维_lwops16 小时前
2025年运维监控建设重点是什么?
运维·监控系统·it监控
二进制coder17 小时前
Linux RTC 驱动子系统详细实现方案
linux·运维·实时音视频
淮北49417 小时前
linux系统学习(10.shell基础)
linux·运维·服务器·学习
视觉震撼17 小时前
RDP登录事件详细溯源分析脚本(兼容Windows PowerShell版本)
运维·网络·windows·网络安全·网络攻击模型·安全威胁分析·安全架构
Lolo_fi17 小时前
记录Fedora43上安装向日葵
linux
noravinsc17 小时前
两台 centos 7.9 部署 pbs version 18.1.4 集群
linux·运维·centos