记一次线上 Spring CPU 高负载的解决思路

记一次线上CPU高负载的解决思路

背景: 在某一天,运营同事突然发现运营看板好几天没有更新数据了, 然后找了过来?!

这里看似抛出了一个问题 ?

但细想一下, 同时暴露了我们对于线上服务的监控未完全覆盖到!!! 这是致命的!!!

当然, 这篇文章先不讨论监控的问题, 后面会推出完善的监控方案

定位问题

问题抛过来了, 那么我们第一步要怎样做呢?

拿到问题的第一步, 先理解题意, 这里有几个关键的信息点

第一 : 好几天, 具体哪一天, 这个后面确认了一个具体的时间点

第二 : 运营看板, 这是重点, 是我们切入问题的关键

好了, 有了这两个关键的信息, 我们接下来就开始定位问题代码了

  1. 从功能出发, 定位到未更新的表
  2. 通过表来定位到更新数据的代码

通过上面两步找到了问题代码是某个定时任务

日志搜索

这时按照肌肉记忆, 先是看了代码有没有关键点的日志输出, 发现代码开始和结束都有打印日志的操作

顺藤摸瓜,先登录到服务器端, grep一波关键的日志

发现当天的 info.log 没有打印到日志, 这就很奇怪了, 因为这个定时任务的 cron 是每天凌晨1点开始

然后就查了前一天的日志, 发现有打印到开始的日志, 但是没有打印结束的日志

然后再去找看有没有异常的日志, 发现并没有

监控看板

从日志看出了一点不对劲的味道, 但还没有足够的线索定位到具体的问题

这时去查看容器的资源情况

这里观察的是, 在两台容器中, 有一台容器的 cpu 吃得很紧

另外一台却是风平浪静

从这里可以定位到大概的问题了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值