工作纪实39-排查CPU飙高(业务慢查询)

发布时间:2023年12月27日

前两天刚处理了死循环的cpu飙高(持续缓慢增高),这两天又遇到了另一个cpu偶发飙高场景

现象:发现cpu偶发性飙高,动不动就100%+的使用率,关键问题是一会儿就又下去了,非常不好分析定位!
在这里插入图片描述
排查思路:单一的按照死循环去看线程,是看不出来的,因为飙高线程id一直在交替变化;所以得转换一下思路,具体问题具体分析;

根据图片可以看到这个现象:
1.半夜也有部分cpu飙高情况
2.白天频繁飙高
3.cpu线程数没有明显增加(可能是部分业务查询慢,导致cpu飙高)

猜测一:
定时job(因为半夜也有)

验证猜测一:
通过排查日志和数据量,发现这种假设不存在(失败,半夜确实有用户使用我们的app,也是醉了)

猜测二:
部门sql慢查询导致

验证猜测二:
上数据库监控平台发现有一批慢sql,直接申请索引处理,发现没有太大变化(失败)

猜测三:
某一段时间的查询激增导致,而这些查询不算慢也不算快,但是量很大

验证猜测三:
统计了2分钟内的cpu高峰日志,和cpu低峰日志,进行接口调用数对比排查;(没有明显差异)

猜测四:
目前来看,只有猜测三是合理的,继续对猜测3的接口调用时间进行统计;(发现了问题)
在这里插入图片描述
发现某一个接口的耗时情况是上图的样子(导出日志写程序统计耗时);
剩下的就是代码分析了,发现有for循环的查库操作,做优化后,cpu使用率明显下降;

文章来源:https://blog.csdn.net/u013553309/article/details/135238542
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。