异常诊断

最近更新时间:2024-05-31 17:29:52

我的收藏
异常诊断功能为用户的数据库实例提供实时的性能监控、健康巡检、故障诊断和优化,让用户既可以直观地感知数据库实例实时的运行状况,也可以定位实时出现的性能异常,并根据优化建议进行系统优化。异常诊断支持查看实例或分片的实时和历史异常诊断信息。

整体概览



查看诊断信息

1. 登录 DBbrain 控制台
2. 在左侧导航栏,选择诊断优化。
3. 在上方选择对应的实例 ID 或分片 ID,选择异常诊断页签。
4. 在页面右侧选择查看实时或历史诊断信息。

5. 查看时间轴范围内的健康得分趋势图和诊断的异常事件、 3D 拓扑视图或平面视图。
查看健康得分趋势图
单击趋势图中的任意时间点,显示该时间点的健康得分,同时下方联动展示以下信息: 健康得分、CPU、内存、总请求数、慢查询数、SQL 语句类型每秒执行的次数将联动展示该时间点的数据信息。
在健康得分下单击详情,可跳转至健康报告页面,查看健康发得分、得分详情和健康报告。



查看诊断事件条形图
鼠标悬停至诊断事件条形图时,将展示风险等级、概要和起止时间等信息,单击条形图可跳转至事件详情页面,可查看事件详情、现场描述、智能分析、优化建议等信息。查看事件详情的操作请参见 异常告警






查看视图
选择3D 平面,查看视图。视图中将展示磁盘层(包括数据空间、日志空间、各参数值)、引擎层(回滚次数、锁等待次数、各参数值)、server 层(连接数、各参数值)等相关信息,并可单击查看配置信息,鼠标悬停至连接处序号,可显示相关数据信息。

6. 查看已选时间范围的诊断提示。
实时:选择实时,展示近三小时的风险分布和诊断详情。
历史:选择历史,展示已选时间段的风险分布和诊断详情。


查看诊断提示

1. 登录 DBbrain 控制台
2. 在左侧导航栏,选择诊断优化。
3. 在上方选择对应的实例 ID 或分片 ID,选择异常诊断页签。
4. 在页面右侧选择查看实时或历史诊断信息。
5. 查看已选时间范围的诊断提示。
实时:选择实时,展示近三小时的风险分布和诊断详情。
历史:选择历史,展示已选时间段的风险分布和诊断详情。

查看诊断事件详情
诊断提示中,单击具体的事件告警所在行,或者鼠标悬停至事件告警上,单击查看,进入事件详情页面,查看事件详情。
事件详情主要包括事件详情、现场描述、智能分析、优化建议等信息。诊断类型不同展示的事件详情不同,请以实际展示为准。
事件详情:包括诊断项、起止时间、风险等级、概要等信息。
现场描述:异常事件(或健康巡检事件)的外在表现现象的快照和性能趋势。
智能分析:分析导致性能异常的根本原因,定位具体操作。
优化建议:提供优化指导建议,包括但不限于 SQL 优化(索引建议、重写建议)、资源配置优化和参数调优。


诊断项说明

诊断项为智能诊断的项目,其类别包括性能、可用性、可靠性、可维护性四类,每个诊断项仅属于一个类别。
诊断项名称
诊断项类别
说明
风险等级划分
连接性检查
可用性
无法与数据库建立连接
致命
插入、更新、删除慢
性能
执行插入、更新或删除操作时,需要花费较长的时间才能完成
严重:锁等待导致
告警:非锁等待导致
慢 SQL
性能
存在需要优化的慢查询语句
提示
等待行锁
性能
存在等待锁时间过长的事务
严重
事务未提交
性能
存在过长时间的未提交的事务
致命
长事务
性能
事务持续时间长
致命:事务持续时间 > 60
严重:60 ≥ 事务持续时间 > 30
告警:事务持续时间 ≤ 30
SQL 执行间隔过大事务
性能
事务中存在执行间隔过大 SQL
致命:事务中 SQL 执行间隔 > 10
严重:10 ≥ 事务中 SQL 执行间隔 > 5
告警:事务中 SQL 执行间隔 ≤ 5
事务中 SQL 过多
性能
事务中 SQL 过多
致命:事务中 SQL 执行间隔 > 10
严重:10 ≥ 事务中 SQL 执行间隔 > 5
告警:事务中 SQL 执行间隔 ≤ 5
大事务影响行数
性能
该事务对过多的数据行有插入、删除或修改
告警:事务中 SQL 数量 > 1000
提示:1000 ≥ 事务中 SQL 数量 ≥ 3
SQL 响应时间过长事务
性能
事务中存在响应时长过大的 SQL
致命:事务响应时长 > 30
严重:30 ≥ 事务响应时长 > 15
告警:15 ≥ 事务响应时长 > 5
提示:事务响应时长 ≤ 5
存在报错 SQL 事务
性能
事务中存在报错 SQL
致命
非预期提交事务
性能
事务非预期的隐式提交
致命
未恢复自动提交事务
性能
未恢复自动提交事务模式
致命
DDL 语句等待 Metadata Lock
性能
存在等待 Metadata Lock 的线程,且其在执行 DDL 语句
严重
insert, update, delete 语句等待 Metadata Lock
性能
存在等待 Metadata Lock 的线程,且其在执行 IUD 语句
严重
select 语句等待 Metadata Lock
性能
存在等待 Metadata Lock 的线程,且其在执行 SELECT 语句
严重
死锁
可靠性
数据库发生死锁
致命
只读锁
性能
存在等待全局只读锁的线程
致命
SQL 语句等待 Metadata Lock
性能
存在等待 Metadata Lock 的线程,且其在执行 DDL 语句
告警
Waiting for flush tables
性能
存在等待 flush table 状态的线程
致命:活跃会话数 > 30
严重:30 > 活跃会话数 > 20
告警:活跃会话数 < 20
活跃会话高
性能
活跃会话数大于三倍的数据库实例 CPU 规格
提示
高并发/压力请求
性能
产生高并发或者压力请求
致命:CPU 利用率 > 80
严重:80 > CPU 利用率 > 60
告警:60 > CPU 利用率 > 40
预编译语句过多
性能
出现未关闭预编译语句个数过多(16382是 MySQL 默认允许的最大值)
致命:预编译语句个数 > 16382
严重:16382 > 预编译语句个数 > 14695
告警:14695 > 预编译语句个数 > 11505
提示:预编译语句个数< 11505
磁盘空间利用率
可靠性
磁盘利用率过高
致命:磁盘利用率 > 95
严重:95 > 磁盘利用率 > 90
告警:90 > 预编译语句个数 > 85
提示:85 > 预编译语句个数 > 80
CPU 利用率
性能
CPU 利用率过高
致命:CPU 利用率 > 80
严重:80 > CPU 利用率 > 60
告警:60 > CPU 利用率 > 40
Table open cache 命中率低
性能
Table open cache 命中率低
告警
高危账号
可维护性
存在匿名账户、无密码账户等情况
提示
大表
可维护性
单表大于10%的实例磁盘规格
致命:单表所占空间 > 磁盘容量的40%
严重:磁盘容量的40% > 单表所占空间 > 磁盘容量的30%
告警:磁盘容量的30% > 单表所占空间 > 磁盘容量的20%
提示:磁盘容量的20% > 单表所占空间 > 磁盘容量的10%
复制 IO 线程中断
可靠性
主从中断,复制 IO 线程中断
致命:非重启导致中断
提示:重启导致中断
复制 SQL 线程中断
可靠性
主从中断,复制 SQL 线程中断
致命:非重启导致中断
DDL 导致复制延迟
可靠性
DDL 导致的主从复制延迟(包括主-只读,主-备库延迟)
致命:只读延迟 > 10min
严重:只读延迟<10min 或备库延迟 > 10 min
告警:备库<10min
事务导致复制延迟
可靠性
事务导致的主从复制延迟(包括主-只读,主-备库延迟)
致命:只读延迟 > 10min
严重:只读延迟<10min 或备库延迟 > 10 min
告警:备库<10min
全局只读锁导致复制延迟
可靠性
全局只读锁导致的主从复制延迟(包括主-只读,主-备库延迟)
致命:只读延迟 > 10min
严重:只读延迟<10min 或备库延迟 > 10 min
告警:备库<10min
自增键耗尽
可用性
自增值超过自增主键最大值80%
致命:自增值超过最大值80%
复制延迟
可用性
主从复制延迟(包括主-只读,主-备库延迟)
致命:只读延迟 > 10min
严重:只读延迟<10min 或备库延迟 > 10 min
告警:备库<10min
主从切换
可用性
主实例和从实例发生切换
致命
全表扫描
可用性
在查询中没有使用索引,而是扫描整张表的操作。
致命:全表扫描行数 > 10 * N(N 表示全表扫描行数设定值,默认值 500)
严重:10 * N > 全表扫描行数 > 5 * N(N 表示全表扫描行数设定值,默认值 500)
告警:5 * N > 全表扫描行数 ≥ N(N 表示全表扫描行数设定值,默认值 500)
执行计划变化
可用性
用于发现同 SQL 模板语句的执行计划变化。这种变化可能会导致突发性的性能劣化。
致命:当前 sql 的 query_cost /上一次 sql 的query_cost > 10
严重:10 > 当前 sql 的 query_cost /上一次sql的query_cost > 5
告警:5 > 当前 sql 的 query_cost /上一次 sql的 query_cost > 1
提示:当前 sql 的 query_cost /上一次 sql 的query_cost<1