求助帖: 上线之后数据库 CPU 升高,找不到原因

2020-09-22 10:40:25 +08:00
 chanlk

数据库使用的是 aws 的 rds;

上线后从它的监控面板看到 cpu 使用率大概增加了一倍 做了些工作,但是还是找不到原因

说一下自己已经做过的工作:

  1. 排查了慢查询,正常,和上线前差不多
  2. 数据库的连接数方差变大(变大 20-30%),其他监控曲线波动不大(如 IOPS,网络的 I/O,内存和队列等)
  3. 检查了业务的服务器监控,曲线也是稳定的
  4. 用 show processlist 看了下没有什么毛病

有大佬能提供一下排查思路吗?感激不尽

1926 次点击
所在节点    数据库
7 条回复
pmispig
2020-09-22 10:47:22 +08:00
top 查看 mysql 哪个线程 CPU 使用率高,然后 select * from performance_schema.threads where THREAD_OS_ID=xxx;
yumenawei
2020-09-22 10:50:07 +08:00
更改了 SQL 语句吗?
可能是由于某些计算量大的聚合操作导致的,比如说 max min
pmispig
2020-09-22 10:50:47 +08:00
如果是 rds 的话可能只能用点巧劲儿,把所有的 SQL 日志都打出来,分析下,(执行频率高 and 执行时间很长 )做一个并集,就是这个 SQL,再去找属于哪个应用和业务
chanlk
2020-09-22 11:05:47 +08:00
@yumenawei 更改了 sql,但是这些 sql 是低频的,是客服系统用的
@pmispig 没有太高的数据库权限,我把你的思路提供给了运维小哥,我这边看下从业务接口耗时的层面上不知道能不能找到是哪些接口导致的

谢谢~
tieqishan07li
2020-09-22 11:09:44 +08:00
直接提工单让 AWS 查一下,他们肯定有排查思路
chanlk
2020-09-26 14:03:39 +08:00
这个问题几天前解决了额,回帖终结一下这个.
因为没有数据库的权限,让运维小哥帮忙看了下表 in_use 的情况,发现有几个表一直被使用着.
查了下代码,原因就是有一个接口查询的频率太高了,后面改了下这块的查询逻辑就好了.
avatasia
2020-09-29 14:30:47 +08:00
这个不叫解决吧, 为什么频率高就会影响 CPU?
有没有热块的概念, 有没有争用的概念.

减少查询频率就好啦?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/709301

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX