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

相关推荐
2401_890443027 分钟前
Linux进程间通信
linux·服务器
Xの哲學12 分钟前
Linux 实时调度机制深度解析
linux·服务器·网络·算法·边缘计算
张太行_16 分钟前
Linux信号处理函数中断流程分析
linux
晚风吹人醒.23 分钟前
iptables防火墙规则(一):iptables语法结构,netfilter功能详解及案例演示
linux·服务器·网络·iptables·防火墙··netfilter
学好statistics和DS27 分钟前
两个子进程都sleep, `waitpid` 系统调用
linux·服务器·数据库
シ風箏30 分钟前
AutoGen【部署 02】Linux环境安装部署AutoGenStudio并调用本地 qwen2.5:0.5b 大模型举例
linux·autogen·本地大模型·autogenstudio
xingzhemengyou135 分钟前
LINUX 通过/proc/interrupts了解系统硬件中断的使用情况
linux·arm开发
xingzhemengyou11 小时前
LINUX SSH长连接VS短连接
linux
程序员老徐1 小时前
Tomcat源码分析二(Tomcat启动源码分析)
java·tomcat·firefox
Ares-Wang1 小时前
网络》》防火墙
运维·服务器·网络