DWS_2000000016 查询语句触发下盘量超阈值(Data Spilled to Disks for a Query Statement Exceeds the Threshold)
告警解释
用户业务查询执行过程中,数据库可能会选择将临时结果暂存到磁盘,简称算子下盘。
GaussDB(DWS)每60秒通过GS_WLM_SESSION_STATISTICS视图检测CN上正在执行的作业的负载管理记录,并计算所有下盘DN的最大下盘数据量。
如果10分钟(可配置)内存在SQL的下盘量超过5GB(可配置),则上报查询语句触发下盘量超阈值;当集群不存在符合告警条件的SQL语句时,自动消除该告警。修改告警配置详情请参见修改告警规则。
如果一直存在能够引发告警的阻塞SQL,那么在24小时(可配置)后将再次发起告警。
告警属性
告警ID |
告警归属 |
告警级别 |
告警类型 |
业务类型 |
是否可自动清除 |
---|---|---|---|---|---|
DWS_2000000016 |
管理面 |
>5G 紧急 |
操作告警 |
数据仓库服务 |
是 |
告警参数
类别 |
参数名称 |
参数含义 |
---|---|---|
定位信息 |
名称 |
DWS集群查询语句触发下盘量超阈值。 |
类型 |
操作告警。 |
|
发生时间 |
告警发生时间。 |
|
附加信息 |
集群ID |
集群resourceId、domain_id等详细信息。 |
关于附加信息中下盘量,可连接数据库执行SELECT * FROM GS_WLM_SESSION_STATISTICS查看该视图中的max_spill_size字段。
对系统的影响
下盘量大说明系统I/O资源被大量占用,可能导致数据盘空间不足,引发数据库只读/磁盘满,影响系统可用性,最终导致系统停止服务。
可能原因
- 业务执行过程中正常的数据下盘超过告警阈值。
- 业务SQL的查询执行计划欠佳,大量数据导入内存触发下盘。
- 未及时清理过期数据,导致扫描到过多无效数据而触发下盘。
处理步骤
- 确认执行计划是否欠佳。
- 检查查询语句触发下盘量超阈值告警的配置是否合理。
- 登录GaussDB(DWS)管理控制台,进入“管理 > 告警管理 > 告警规则管理”界面。
- 在“查询语句触发下盘量超阈值”规则所在行“操作”列单击“修改”,进入“修改告警规则”界面。
- 如果集群磁盘容量配置较高,可以考虑将上报阈值调大,建议不超过单个数据盘容量的5%。
需要注意的是,阈值过大时临时下盘可能会导致磁盘使用率告警甚至集群只读,如果存在数据盘使用率接近或超过80%,调整阈值的同时建议清理无用数据,参考节点数据盘使用率超阈值告警。更详细的界面配置说明参考告警规则。
- 查杀下盘量高的SQL语句。
- 返回GaussDB(DWS)管理控制台。
- 在“集群 > 专属集群”界面找到告警集群,在所在行操作列单击“监控面板”进入监控界面。
- 选择“监控 > 实时查询”,选择“实时查询”,单击,选择“dn上下盘的最大数据量(mb)”,查看下盘量情况。
- 和业务侧确认后,选中需要终止的查询ID,单击“终止查询”。
- 调整对业务语句进行磁盘空间管控的数据库参数,具体参数说明请参见语句磁盘空间管控,操作步骤请参见修改数据库参数。
例如:sql_use_spacelimit参数默认值为实例所在磁盘空间总容量的10%,如果磁盘空间充足可以适当调大该参数。当出现单DN写盘超过调整的数值时,DWS会主动终止该query的运行,并提示用户单DN写盘量超阈值。
告警清除
集群不存在下盘量较大的SQL语句时,自动消除告警。