记一次CPU100%的线上问题处理

本文记录了一次线上服务在活动结算时出现CPU占用100%的问题,通过排查存储、SQL、服务器资源,最终发现是代码中一个复杂的while循环导致的死循环。解决方案是暂时替换逻辑,避免使用可能导致死循环的while,改为有限的for循环,并强调了代码审查和避免复杂业务逻辑的重要性。
摘要由CSDN通过智能技术生成

问题

昨天刚好是周五,忙碌了一周本以为可以在周五好好轻松下,没成想线上的活动服务出了个问题,市场反馈最近上线的微信活动(是一个类似于测试性格的答题游戏),在游戏结束后结算的时候页面卡死。

排查

我们赶紧查看接口调用日志,发现接口平均响应时间在4s左右。这次活动使用了mongodb,我们之前在做活动的时候碰到过一次忘记给mongo建立索引,导致接口卡死的情况,所以赶紧检查mongo的查询top情况,发现并没有耗时的请求。

image

这时一个同事提醒我们活动接入了druid,可以检查下是否是sql的问题,我们赶紧打开druid的控制台查看,最慢的sql耗时在800ms,但也不至于把接口拖到4s的地步,不过还是针对索引做了优化。可是情况并没有好转,时间已经过去了十几分钟。

image

那看来不是存储的问题,那就去找服务器的问题,我们就去看服务器的CPU,内存,网络,发现服务器的CPU达到了100%。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值