ALM-27008 DBService长事务总数超过阈值
告警解释
系统每30秒周期性检查DBServer数据库长事务总数,默认数据库事务运行时间大于30分钟即认为该事务为长事务。将长事务总数和阈值相比较,若采集的长事务总数连续n次(n为设定的平滑次数,默认值为3)超过设定阈值(默认阈值为1)时,系统将产生此告警。
当平滑次数为1,DBServer数据库长事务总数小于或等于阈值时,该告警恢复;当平滑次数大于1,DBServer数据库长事务总数连续n次(n为设定的平滑次数)小于阈值的90%时,该告警恢复。
本章节仅适用于MRS 3.6.0-LTS.1及之后版本。
告警属性
| 告警ID | 告警级别 | 告警类型 | 业务类型 | 是否可自动清除 |
|---|---|---|---|---|
| 27008 | 重要 | 业务质量告警 | FusionInsight Manager | 是 |
告警参数
| 类别 | 参数名称 | 参数含义 |
|---|---|---|
| 定位信息 | 来源 | 产生告警的集群名称。 |
| 服务名 | 产生告警的服务名称。 | |
| 角色名 | 产生告警的角色名称。 | |
| 主机名 | 产生告警的主机名。 | |
| 附加信息 | 门限值 | 告警触发的阈值。 |
| 当前值 | 当前采集的指标值。 |
对系统的影响
- 长事务阻塞垃圾回收导致表及索引持续膨胀,消耗大量存储空间;同时引发性能劣化(如IO开销剧增)、锁资源竞争及复制/运维操作失败。
- 长事务拖慢自身执行并阻塞其他SQL,导致业务响应延迟飙升、连接池耗尽;异常中断时回滚耗时极长,增加数据不一致风险。
可能原因
- 告警阈值配置不合理。
- 存在数据库长事务。
- 大事务批量处理数据,执行时间天生过长或者SQL低效(缺索引、关联不当、复杂计算),单条语句运行慢。
- 锁冲突或死锁导致事务被阻塞、反复重试。
- 应用未提交/回滚或客户端异常中断,事务处于空闲残留状态。
处理步骤
检查阈值设置是否合理。
- 在FusionInsight Manager,选择“运维 > 告警 > 阈值设置 > 待操作集群的名称 > DBService > 数据库 > DBService长事务总数”,查看该告警阈值是否合理(默认值1为合理值)。
- 单击“操作”列的“修改”,根据实际服务的使用情况修改告警阈值。
- 选择“集群 > 服务 > DBService”,在“概览”页面查看“DBService长事务总数”图表,检查数据库长事务总数是否低于设置的阈值。
- 等待2分钟查看告警是否自动恢复。
- 是,处理完毕。
- 否,执行步骤 5。
检查数据库是否存在长事务。
- 以omm用户登录DBService主管理节点,执行以下命令登录DBService数据库。
gsql -p 20015 -U omm -W ${数据库密码}
- 执行以下语句,查看数据库是否存在长事务。
SELECT COUNT(1) FROM PG_STAT_ACTIVITY WHERE STATE IN ('active','idle in transaction', 'fastpath function call', 'idle in transaction (aborted)') AND PID <> PG_BACKEND_PID() AND EXTRACT(EPOCH FROM (now() - QUERY_START::timestamptz)) >= 1800;
查询结果大于0,表示存在长事务;查询结果等于0,表示不存在长事务。
- 根据实际情况处理存在的长事务,并等待2分钟,查看告警是否清除。
- 是,执行完毕。
- 否,执行步骤 8。
收集故障信息
告警清除
此告警修复后,系统会自动清除此告警,无需手工清除。
参考信息
不涉及。