如何解决实例 CPU 使用率高问题

最近更新时间: 2026-06-30 15:06:00

问题描述

实例 CPU 利用率过高通常容易导致系统异常,例如响应变慢、无法获取连接、超时等,大量的超时重试往往是性能“雪崩”的罪魁祸首。而 CPU 利用率过高场景,很多时候均是由异常 SQL 所导致,大量锁冲突、锁等待或事务未提交也有可能导致实例 CPU 利用率高。
当数据库执行业务查询、修改语句时,CPU 会先从内存中请求数据块:

  • 如果内存中存在对应的数据,CPU 执行计算任务后会将结果返回给用户,可能涉及到排序类高消耗 CPU 的动作。
  • 如果内存中不存在对应的数据,数据库会触发从磁盘获取数据的动作。
    这两个数据获取过程分别称为逻辑读和物理读。因此,性能较低的 SQL,在执行时容易让数据库产生大量的逻辑读,从而导致 CPU 利用率过高,也可能让数据库产生大量的物理读,从而导致 IOPS 和 I/O 时延过高。

使用“异常诊断”功能排查数据库异常情况

异常诊断功能提供故障主动定位和优化,不需要任何数据库运维经验,不仅包括 CPU 利用率过高的异常,还几乎涵盖所有实例高频的异常和故障。
操作步骤及示例如下:

  1. 登录 DBbrain 控制台,在左侧导航选择诊断优化,在上方选择异常诊断页。
  2. 在左上角选择实例 ID(可输入和搜索),切换至目标实例。
  3. 在页面中选择实时历史要查询的时间,若该时间段内存在故障,可在右侧的“诊断提示”中查看到概要信息。
  4. 单击“诊断详情”栏的诊断项可进入诊断详情页。
    • 事件概要:包括诊断项、起止时间、风险等级、持续时长、概要等信息。
    • 现象描述:异常事件(或健康巡检事件)的外在表现现象的快照和性能趋势。
    • 智能分析:分析导致性能异常的根本原因,定位具体操作。
    • 专家建议:提供优化指导建议,包括但不限于 SQL 优化(索引建议、重写建议)、资源配置优化和参数调优。
  5. 选择专家建议页,即可查看 DBbrain 针对该故障给出的优化建议,本例中是 SQL 语句的优化建议。本例中的 SQL 语句执行时缺少对应的索引,导致该语句执行时要进行全表扫描,单次执行成本高,所以大量并发场景下就很容易导致 CPU 利用率过高,可能会达到100%的状况。