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

相关推荐
longerxin202039 分钟前
nano编辑器插入、编辑完整操作教程(Linux日志/配置专用)
linux·运维·编辑器
cesium vue1 小时前
nginx 流媒体配置
运维·nginx
木心术12 小时前
GitHub Actions自动化运维实战:从CI/CD到全链路DevOps
运维·自动化·github
糯米导航2 小时前
实践教程|搭建电商 AI 无限画布,实现百款商品主图自动化批量生成
运维·人工智能·自动化
朴马丁2 小时前
从制造到智造:PLM如何赋能企业研发创新
大数据·运维·人工智能·食品行业·流程行业plm·化工新材料行业·新能源材料行业
爱小黄2 小时前
使用docker搭建集群-使用 Docker 搭建 KingbaseES 集群
运维·docker·容器
zhougl9962 小时前
Gateway 和 Nginx 路由区别
运维·nginx·gateway
听风3474 小时前
Arch Linux 软件安装完全指南
linux·运维·archlinux·pacman
沉迷学习 日益消瘦4 小时前
10-Gateway API
运维·kubernetes·gateway
网络安全零基础教程5 小时前
网络安全春招面试避坑与复盘指南
linux·网络·安全·web安全·面试·职场和发展