V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
chanlk
V2EX  ›  数据库

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

  •  
  •   chanlk · 69 天前 · 976 次点击
    这是一个创建于 69 天前的主题,其中的信息可能已经有所发展或是发生改变。

    数据库使用的是 aws 的 rds;

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

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

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

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

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

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

    减少查询频率就好啦?
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4297 人在线   最高记录 5268   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 15ms · UTC 10:07 · PVG 18:07 · LAX 02:07 · JFK 05:07
    ♥ Do have faith in what you're doing.