云数据库 GaussDB-GaussDB(for MySQL)实例CPU升高定位思路:场景1 慢查询导致CPU升高

时间:2023-11-01 16:16:29

场景1 慢查询导致CPU升高

问题原因:大量慢SQL导致实例CPU升高,需要优化相应的慢SQL。

排查思路:

查看CPU使用率和慢日志个数统计监控指标。

  • 如果慢日志个数很多,且与CPU曲线吻合,可以确定是慢SQL导致CPU升高。
  • 如果慢日志个数不多,但与CPU使用率基本一致,进一步查看行读取速率指标是否与CPU曲线吻合。

    如果吻合,说明是少量慢SQL访问大量行数据导致CPU升高:由于这些慢SQL查询执行效率低,为获得预期的结果需要访问大量的数据导致平均IO高,因此在QPS并不高的情况下(例如网站访问量不大),也会导致实例的CPU使用率偏高。

解决方案:

  1. 根据CPU使用率过高的时间点,查看对应时间段的慢日志信息。
  2. 重点关注扫描行数、返回结果行数超过百万级别的慢查询,以及锁等待时间长的慢查询。
  3. 慢查询用户可自行分析,或使用数据管理服务(DAS)的SQL诊断工具对慢查询语句进行诊断。
  4. 使用数据库代理+只读节点架构,实现读写分离。只读节点专门负责查询,减轻主库压力,提升数据库吞吐能力,详见读写分离简介
  5. 通过分析数据库执行中的会话来定位执行效率低的SQL。
    1. 连接数据库。
    2. 执行show full processlist;
    3. 分析执行时间长、运行状态为Sending data、Copying to tmp table、Copying to tmp table on disk、Sorting result、Using filesort的会话,均可能存在性能问题,通过会话来分析其正在执行的SQL。
support.huaweicloud.com/trouble-gaussdb/gaussdb_trouble_0406.html