DWS_2000000016 DWS集群查询语句触发下盘量超阈值
告警解释
用户业务查询执行过程中,数据库可能会选择将临时结果暂存到磁盘,简称算子下盘。
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字段。
告警指标
调用获取指定指标相关采集数据 - ListMetricsDataAPI接口获取该告警指标,其中接口中的指标名称为QueryMonitor。
- 请求示例:
GET https://{Endpoint}/v1/{project_id}/clusters/{cluster_id}/dms/metrics/QueryMonitor?offset=0&limit=1&from=1786782138946&to=1786784159004&order_by=ctime&sort_by=desc - 响应示例:
告警指标为响应结果中的max_spill_size/1024,其中max_spill_size表示如果发生下盘,所有下盘DN的最大下盘数据量,默认为0。
{ "code": 0, "msg": "OK", "data": [ { "query_id": "80220368369538752", "backend_start": 1786783088, "pid": "140504051222312", "block_time": 0, "application_name": "OM", "estimate_total_time": 0, "memory_skew_percent": 0, "max_peak_memory": 0, "iops_skew_percent": 0, "min_peak_memory": 0, "ctime": 1786783088000, "warning": "", "min_cpu_time": 0, "total_cpu_time": 0, "dntime_skew_percent": 0, "average_spill_size": 0, "query": "/* autopilot */ SELECT pgsac.datname as db_name, pgws.nodename as inst_name, pgsac.pid as pid, pgsac.query_id as query_id, pgws.query_band, null as job_name, null as job_inst, pgsac.usename as user_name, pgsac.application_name, pgsac.client_addr as client_address, pgsac.client_hostname, pgsac.client_port, pgsac.waiting, extract('epoch' from pgws.start_time at time zone 'UTC')::bigint as start_time, pgswlm.block_time, pgws.duration, pgws.estimate_total_time, pgws.estimate_left_time, pgswlm.enqueue, pgswlm.priority, pgsac.resource_pool, pgws.control_group, pgws.min_peak_memory, pgws.max_peak_memory, pgws.average_peak_memory, pgws.memory_skew_percent, pgws.estimate_memory, pgws.spill_info, pgws.min_spill_size, pgws.max_spill_size, pgws.average_spill_size, pgws.spill_skew_percent, pgws.min_dn_time, pgws.max_dn_time, pgws.average_dn_time, pgws.dntime_skew_percent, pgws.min_cpu_time, pgws.max_cpu_time, pgws.total_cpu_time, pgws.cpu_skew_percent, pgws.warning, pgws.average_peak_iops, pgws.iops_skew_percent, pgws.ma", "priority": 2, "start_time": 0, "max_spill_size": 0, "db_name": "postgres", "average_peak_memory": 0, "query_plan": "", "query_band": "", "job_inst": "", "wlm_attrib": "Internal", "spill_info": "", "virtual_cluster_id": 81882, "waiting": false, "average_dn_time": 0, "user_name": "Ruby", "min_spill_size": 0, "query_status": "active", "resource_pool": "root", "duration": 0, "client_port": "-1", "estimate_memory": 0, "elapsed_time": 0, "curr_xact_start": 1786783088, "client_address": "", "lane": "None", "query_elapsed_time": 0, "control_group": "", "average_peak_iops": 0, "query_start": 1786783088, "max_dn_time": 0, "cpu_skew_percent": 0, "min_peak_iops": 0, "enqueue": "None", "job_name": "", "client_hostname": "", "spill_skew_percent": 0, "system_query": true, "estimate_left_time": 0, "min_dn_time": 0, "wlm_status": "running", "max_peak_iops": 0, "inst_name": "cn_5001", "max_cpu_time": 0, "state_change": 1786783088 } ], "count": 166 }
对系统的影响
下盘量大说明系统I/O资源被大量占用,可能导致数据盘空间不足,引发数据库只读/磁盘满,影响系统可用性,最终导致系统停止服务。
可能原因
- 业务执行过程中正常的数据下盘超过告警阈值。
- 业务SQL的查询执行计划欠佳,大量数据导入内存触发下盘。
- 未及时清理过期数据,导致扫描到过多无效数据而触发下盘。
处理步骤
- 确认执行计划是否欠佳。
- 检查查询语句触发下盘量超阈值告警的配置是否合理。
- 登录DWS管理控制台。
- 进入“监控 > 告警 > 告警规则管理”界面。
- 在“查询语句触发下盘量超阈值”规则所在行“操作”列单击“修改”,进入“修改告警规则”界面。
- 如果集群磁盘容量配置较高,可以考虑将上报阈值调大,建议不超过单个数据盘容量的5%。
需要注意的是,阈值过大时临时下盘可能会导致磁盘使用率告警甚至集群只读,如果存在数据盘使用率接近或超过80%,调整阈值的同时建议清理无用数据,参考节点数据盘使用率超阈值告警。更详细的界面配置说明参考告警规则。
- 查杀下盘量高的SQL语句。
- 返回DWS管理控制台。
- 在“集群 > 集群列表”界面找到告警集群,在所在行操作列单击“监控面板”进入监控界面。
- 选择“监控 > 实时查询”,切换至“实时查询”模块,单击
,选择“dn上下盘的最大数据量(mb)”,查看下盘量情况。 - 和业务侧确认后,选中需要终止的查询ID,单击“终止查询”。
- 调整对业务语句进行磁盘空间管控的数据库参数,具体参数说明请参见语句磁盘空间管控,操作步骤请参见修改数据库参数。
例如:sql_use_spacelimit参数默认值为实例所在磁盘空间总容量的10%,如果磁盘空间充足可以适当调大该参数。当出现单DN写盘超过调整的数值时,DWS会主动终止该query的运行,并提示用户单DN写盘量超阈值。

告警清除
集群不存在下盘量较大的SQL语句时,自动消除告警。