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 |
紧急 |
是 |
告警参数
参数名称 |
参数含义 |
---|---|
告警源 |
产生告警的系统名称,告警的详细分类。 |
集群名称 |
产生告警的集群。 |
定位信息 |
产生告警的集群ID,集群名称。 |
附加信息 |
CloudService表示产生告警的云服务,依次为服务名,资源标识,资源名称,数据库名称,连接后端的用户名称,查询Id;first_alarm_time表示告警的首次出现时间;查询语句则表示引发此告警的查询语句,最后附带由此查询语句引发的下盘量。示例:CloudService=DWS,resourceId:xxxx-xxxx-xxxx-xxxx,resourceIdName:test_dws,db_name:test_db,user_name:test_user,query_id:756942385413326696,first_alarm_time:2022-12-30:12:42:77:查询语句(ID=756942385413326696) select num,value,cnt,rk,cnt/sumcnt as ratio,sum(ratio) over (over by rk) as cumuratio from ......;触发结果集下盘,且下盘量为15GB。 |
告警时间 |
告警的产生时间。 |
状态 |
告警当前的活动状态。 |
关于附加信息中下盘量,可连接数据库执行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语句时,自动消除告警。