ALM-27012 数据库80% SQL响应时间超过阈值
告警解释
系统每30秒周期性检查DBServer数据库80% SQL响应时间,若采集的数据库80% SQL响应时间连续n次(n为设定的平滑次数,默认值为3)超过设定阈值时,系统将产生此告警。
当平滑次数为1,DBServer数据库80% SQL响应时间小于或等于阈值时,该告警恢复;当平滑次数大于1,DBServer数据库80% SQL响应时间连续n次(n为设定的平滑次数)小于阈值的90%时,该告警恢复。
本章节仅适用于MRS 3.6.0-LTS.1及之后版本。
告警属性
| 告警ID | 告警级别 | 告警类型 | 业务类型 | 是否可自动清除 |
|---|---|---|---|---|
| 27012 | 重要(默认阈值为10) 次要(默认阈值为15) | 业务质量告警 | FusionInsight Manager | 是 |
告警参数
| 类别 | 参数名称 | 参数含义 |
|---|---|---|
| 定位信息 | 来源 | 产生告警的集群名称。 |
| 服务名 | 产生告警的服务名称。 | |
| 角色名 | 产生告警的角色名称。 | |
| 主机名 | 产生告警的主机名。 | |
| 附加信息 | 门限值 | 告警触发的阈值。 |
| 当前值 | 当前采集的指标值。 |
对系统的影响
- SQL长期运行时间长会导致系统资源占用高,影响其它任务获取资源。
- 业务任务运行缓慢,影响客户体验。
可能原因
- 告警阈值配置不合理。
- 数据库80% SQL响应时间超过阈值。
- 系统资源使用率过高导致任务运行缓慢。
- SQL本身业务逻辑复杂或者数据量过大导致任务运行缓慢。
处理步骤
检查阈值设置是否合理。
- 在FusionInsight Manager,选择“运维 > 告警 > 阈值设置 > 待操作集群的名称 > DBService > 数据库 > 80% SQL响应时间”,查看该告警阈值是否合理。
- 单击“操作”列的“修改”,根据实际服务的使用情况修改告警阈值。
- 选择“集群 > 服务 > DBService”,在“概览”页面查看“DBService SQL响应时间”图表,检查数据库SQL响应时间是否低于设置的阈值。
- 等待2分钟查看告警是否自动恢复。
- 是,处理完毕。
- 否,执行步骤 5。
检查数据库80% SQL响应时间。
- 以omm用户登录DBService主管理节点,执行以下命令登录DBService数据库。
gsql -p 20015 -U omm -W ${数据库密码}
- 执行以下命令,查看数据库80%SQL响应时间是否超阈值。
- 执行如下SQL计算当前数据库中SQL执行耗时的总数量并计算前80%的SQL数量。
select count(1) from pg_stat_activity where STATE = 'active' and pid <> pg_backend_pid()
前80%的SQL数量 = 总数量 * 0.8
- 执行如下SQL计算当前数据库中SQL执行耗时前80%的SQL执行总耗时。
SELECT SUM(EXTRACT(EPOCH FROM (NOW() - QUERY_START::TIMESTAMPTZ))) AS TOTALSECONDS FROM (SELECT QUERY_START FROM PG_STAT_ACTIVITY WHERE PID <> PG_BACKEND_PID() AND STATE = 'active' ORDER BY NOW() - QUERY_START LIMIT ${前80%的SQL数量});
- 使用以下公式计算80% SQL响应平均耗时,并确认是否超阈值。
- 执行如下SQL计算当前数据库中SQL执行耗时的总数量并计算前80%的SQL数量。
- 根据实际情况处理高耗时的SQL任务或者修改告警阈值,并等待2分钟,查看告警是否清除。
- 是,执行完毕。
- 否,执行步骤 8。
收集故障信息
告警清除
此告警修复后,系统会自动清除此告警,无需手工清除。
参考信息
不涉及。