技术原理
核心机制
GUC参数resilience_threadpool_reject_cond会设置两个阈值:“recover_threadpool_percent, overload_threadpool_percent”,
wlm_monitor线程定时检查线程池使用率是否大于overload_threadpool_percent %,条件满足时触发过载逃生,阻止后续的会话接入,优先关闭处于idle状态的会话,会话状态相同时按照查询的开始时间升序关闭会话。当线程池使用率降至小于recover_threadpool_percent %后,停止关闭会话并允许连接接入。
线程池的使用状态可以通过查询DBE_PERF.LOCAL_THREADPOOL_STATUS视图获取,参见《参考》中“Schema > DBE_PERF Schema > Session/Thread > DBE_PERF.LOCAL_THREADPOOL_STATUS”章节。
会话状态及查询的开始时间可以通过查询PG_STAT_ACTIVITY视图获取,参见《参考》中“系统表和系统视图 > 系统视图 > 其他系统视图 > PG_STAT_ACTIVITY”章节。
接口介绍
线程池抗过载主要使用以下GUC参数,具体描述请参见《参考》中“数据库运行参数说明 > GUC参数说明 > 负载管理”章节。
| 参数名 | 参数说明 |
|---|---|
| use_workload_manager | 设置是否开启资源管理功能,该参数打开是线程池抗过载生效的前提。 |
线程池抗过载主要使用以下GUC参数,具体描述请参见《参考》中“数据库运行参数说明 > GUC参数说明 > 资源消耗 > 内存”章节。
| 参数名 | 参数说明 |
|---|---|
| resilience_escape_user_permissions | 设置是否开启sysadmin和monadmin权限用户的线程池抗过载功能。 |
线程池抗过载主要使用以下GUC参数,具体描述请参见《参考》中“数据库运行参数说明 > GUC参数说明 > 线程池”章节。
| 参数名 | 参数说明 |
|---|---|
| enable_thread_pool | 控制是否使用线程池功能。 |
| resilience_threadpool_reject_cond | 用于控制线程池过载逃生的线程池使用率比例。 |