记一次cpu跑满的故障解决过程

线上web项目CPU负载异常升高至800%,排除内存问题后,怀疑存在死循环。通过分析进程和线程堆栈,发现HashMap在多线程环境中的潜在问题,可能导致循环。解决方案是避免在并发情况下直接操作HashMap。
摘要由CSDN通过智能技术生成

今天运维反馈,我们线上一个web项目,CPU负载非常高,导致其他项目都快不正常了,查看线上的cpu负载,看到cpu竟然被这个进程占用了800%以上,着实惊人。

当时的CPU负载图:

而正常状态下应该是:

运维在服务器top查询的结果如下图所示:

怎么回事呢?内存占用并不高,所以排除是内存漏洞或gc等问题,最有可能的原因,就是代码上有死循环。于是试着看代码。

    看了半天后,并没有发现有死循环的情况。竟然CPU看到该进程占用如此多的资源,那能否看到某个线程的使用情况呢?运维把内存dump下来以后,的确看到一些运行的线程,但看不出什么名目来。网上发现一篇好文章,《tomcat7高CPU问题》

原文就不赘述了,这里只引用其关键部分:

第一步,使

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值