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

相关推荐
济6171 分钟前
linux 系统移植(第十二期)---Linux 内核移植(1)--- Ubuntu20.04
linux
EverydayJoy^v^2 分钟前
RH134学习进程——六.管理SELinux安全
linux·学习·安全·selinux
小手智联老徐2 分钟前
漫谈 Linux 声卡驱动开发的设备树与 I2S
linux·运维·驱动开发
云栈开源日记3 分钟前
Linux Kernel:云原生时代的操作系统内核
linux·运维·云原生
网硕互联的小客服3 分钟前
Debian系统提示“Media change...”如何处理?
运维·debian
linweidong4 分钟前
K8s节点保卫战:基于Node Local DNS架构的磁盘自愈系统设计
运维·docker·云原生·容器·架构·kubernetes·k8s
小手智联老徐5 分钟前
Jetson Orin Nano 音频设置与开发之 DTS
linux·驱动开发·音视频
HalvmånEver7 分钟前
Linux:信号捕捉上(信号三)
linux·运维·服务器
HIT_Weston9 分钟前
108、【Ubuntu】【Hugo】搭建私人博客:搜索引擎
linux·ubuntu·搜索引擎
Gofarlic_OMS12 分钟前
Fluent许可证使用合规性报告自动化生成系统
java·大数据·运维·人工智能·算法·matlab·自动化