更新时间:2026-07-28 GMT+08:00
分享

技术原理

核心机制

GUC参数resilience_memory_reject_percent会设置两个阈值:"recover_memory_percent, overload_memory_percent",具体描述请参见《参考》中“数据库运行参数说明 > GUC参数说明 > 资源消耗 > 内存”章节。

wlm_monitor线程定时检查动态内存使用率是否大于overload_memory_percent %,条件满足时触发过载逃生,阻止后续的会话接入,优先关闭处于idle状态的会话,会话状态相同时按照内存使用量降序关闭会话。当动态内存使用率降至小于recover_memory_percent %后,停止关闭会话并允许连接接入。

动态内存使用率 = dynamic_used_memory/max_dynamic_memory * 100%,dynamic_used_memory和max_dynamic_memory可以通过查询PV_TOTAL_MEMORY_DETAIL视图获取,具体描述请参见《参考》中“系统表和系统视图 > 系统视图 > 其他系统视图 > PV_TOTAL_MEMORY_DETAIL”章节。

会话状态可以通过查询PG_STAT_ACTIVITY视图获取,具体描述请参见《参考》中“系统表和系统视图 > 系统视图 > 其他系统视图 > PG_STAT_ACTIVITY”章节。

接口介绍

内存抗过载主要使用以下GUC参数,具体描述请参见《参考》中“数据库运行参数说明 > GUC参数说明 > 负载管理”章节。

表1 GUC参数

参数名

参数说明

use_workload_manager

设置是否开启资源管理功能,该参数打开是内存抗过载生效的前提。

内存抗过载主要使用以下GUC参数,具体描述请参见《参考》中“数据库运行参数说明 > GUC参数说明 > 资源消耗 > 内存”章节。

表2 GUC参数

参数名

参数说明

enable_memory_limit

设置是否打开内存管理功能,该参数打开是内存抗过载生效的前提。

resilience_memory_reject_percent

用于控制内存过载逃生功能的动态内存占用百分比。

resilience_escape_user_permissions

设置是否开启sysadmin和monadmin权限用户的内存抗过载功能。

相关文档