更新时间:2024-12-30 GMT+08:00
使用DAS定位CPU使用率高问题
CPU使用率高,主要有两类原因导致:
- 慢SQL
慢SQL的查询效率低,为获取大量数据导致IO升高,主要表现为QPS不高,慢日志数量多。您可以在DAS性能页面查看CPU使用率、QPS、行读取速率等维度监控,确认问题后,可以通过Kill会话、SQL诊断优化索引等方式解决问题。
- 高并发
当数据库实例的QPS升高时,实例同时处理大量并发数据库操作,CPU使用率也会随之升高。您可以在DAS性能页面,查看QPS、活跃连接数、CPU使用率等指标,确认问题后,可以通过SQL限流、Kill会话、自治限流等功能处理,待重要业务恢复后,评估是否为业务异常行为而调整业务。如果发现由于实例的性能规格无法满足持续上涨的业务,建议升级实例规格。
解决方案(以MySQL为例)
当SRE收到华为云数据库告警推送,发现数据库实例状态异常(CPU飙升)时,查看并处理实例的CPU飙升问题(构造的CPU高场景):
- 登录管理控制台。
- 单击管理控制台左上角的,选择区域和项目。
- 单击页面左上角的,选择“数据库 > 数据管理服务 DAS”,进入数据管理服务页面。
- 在左侧的导航栏中单击
页签,进入DBA智能运维实例列表页面。
您也可以在产品概览页面,单击“进入DBA智能运维”,进入DBA智能运维实例列表页面。
- 在实例列表页面右上角,按照引擎、实例名称或者实例IP筛选实例,单击“详情”,进入实例总览页面。
图1 DBA智能运维实例总览页面
- 单击“性能”,进入性能监控页面。
图2 性能监控
- 重点观察的关键指标,如当前活跃连接数、数据库总连接数、QPS、慢日志个数统计、CPU使用率的趋势。
图3 当前活跃连接数
图4 数据库总连接数
图5 QPS
图6 慢日志个数统计
图7 CPU使用率
- 根据监控指标初步判断,本次实例CPU飙升为慢SQL(慢日志个数剧增)和高并发(连接数剧增)共同导致。
- 单击
,观察慢SQL详情。图8 慢SQL
发现短时间发送了大量相同慢SQL,单条SQL执行时间在1分钟左右。SRE和业务侧研判决定限制该类型SQL执行,恢复数据库上其他核心业务。
- 在“SQL”页签下选择“SQL限流”,开启SQL限流开关。
- 新建SQL限流规则,选择“SELECT”类型,选择“原始SQL语句生成关键字”,输入原始SQL语句,单击生成关键字,最大并发数设置为1,并Kill满足规则已有会话。
图9 选择SQL类型
图10 选择SQL限流规则
发现SQL限流规则已开始生效,开始拦截命中规则的SQL。
- 单击“性能”,观察数据库性能指标,发现CPU使用率开始下降,业务侧反馈核心业务已恢复。
图11 性能指标
观察发现,SQL限流生效后,已无新增相同慢SQL。
图12 慢SQL趋势
图13 性能指标