tomcat应用服务器大量接口超时,内存及CPU飙升100%以上解决流程

问题现象

最近我们相关站点的docker环境出现一个奇怪的现象,大量接口超时,普遍都是几千毫秒。

问题解决

经过排查,已经确定不是被调用服务端的问题,于是开始排查我们自己的环境,发现docker容器的内存,从启动开始内存不断上升,然后找到我们的应用服务器。
1.输入top命令,查找占用cpu较大的进程,发现是java进程已经飙升90%。
2.然后拿到这个进程的pid,接着输入命令 top -Hp {pid}
3.查看这个进程下的所有线程占用情况
4.找到对应CPU较高的线程的pid,我们这边定义为tid,一般找两到三个。
5.将此tid转为16进制的 输入命令 printf “%x\n” {tid}得到HTID
6.输入命令将相关上下文堆栈信息打出来 jstack {pid}|grep -i {HTID} -A 30
7.好了,可以领一个BUG了。

问题原因

结果是某种业务场景下导致的for循环,一直在new 对象,陷入循环不可自拔导致。
最后送给自己6个字:“程序员要严谨”

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]:前几天线上服务器某个Tomcat进程突然间歇性CPU占用率100%,这个并不是突然性的,而是有规律的,Top了一下基本每隔30s飙升一次,坐等5s左右回落。虽然这酱紫,由于是多核CPU,外加其实并没有多少真实用户在访问,也并不影响什么。\[1\] 问题:windows tomcat cpu 100% 回答: 如果在Windows上运行的Tomcat进程出现CPU占用率100%的问题,可以尝试以下步骤进行排查和解决。首先,可以通过任务管理器查看Tomcat进程的详细信息,包括PID(进程ID)。然后,可以使用jstack命令保存Tomcat进程的线程现场信息,例如jstack <PID> > <文件路径>。接下来,可以使用文本编辑器打开保存的文件,搜索高CPU占用的线程ID(通常以16进制表示)。最后,根据搜索到的线程ID,可以进一步分析和解决CPU占用率高的问题。\[2\] #### 引用[.reference_title] - *1* [记一次懵比的Tomcat进程CPU使用率100%](https://blog.csdn.net/weixin_28759725/article/details/119228133)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [线上Java项目cpu突然100%Tomcatcpu占用100%](https://blog.csdn.net/Blueeyedboy521/article/details/124145088)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值