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

相关推荐
Web极客码几秒前
如何通过GUI或命令行更改Ubuntu 20.04的DNS设置
linux·ubuntu·php
漫漫求几秒前
ubuntu常用命令
linux·ubuntu
..Move...2 分钟前
云原生运维企业级实战项目:CentOS Stream 8 下 Nginx 高可用集群部署
运维·云原生·centos
徐徐图之!3 分钟前
四、【阶段一运维基础 之 走进 Liunx:心理铺垫篇】
linux·运维
计算机毕设指导63 分钟前
基于微信小程序的网络安全知识科普平台系统【源码文末联系】
java·spring boot·安全·web安全·微信小程序·小程序·tomcat
永恒-龙啸5 分钟前
闲置机安装istoreos+常用软件介绍
linux·github·开源软件·istoreos
LingRannn5 分钟前
Ubuntu 24.04 安装 Docker Engine
linux·ubuntu·docker
lhyzws6 分钟前
CENTOS上的网络安全工具(三十三) Portainer Kafka-Clickhouse部署(2)
linux·运维·centos
凯子坚持 c7 分钟前
Docker存储卷深度解析:机制、管理与数据持久化实战
运维·docker·容器
TeleostNaCl8 分钟前
如何在 Vim 启用行号显示和语法高亮功能
linux·经验分享·编辑器·vim