云数据库 GAUSSDB-线程池:resilience_threadpool_reject_cond

时间:2024-11-02 18:51:22

resilience_threadpool_reject_cond

参数说明:用于控制线程池过载逃生的堆积会话数占比。该参数仅在GUC参数enable_thread_pool和use_workload_manager打开时生效。该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。

取值范围:字符串,长度大于0

该参数分为recover_threadpool_percent、overload_threadpool_percent 2部分,这2个部分的具体含义如下:

  • recover_threadpool_percent:线程池恢复正常状态的接入会话占线程池初始设置线程数的百分比,当已经接入的会话数小于线程池初始设置数乘以该值对应的百分比后,停止过载逃生并放开新连接接入,取值为0~INT_MAX,设置为多少表示百分之多少。
  • overload_threadpool_percent:线程池过载时的接入会话占线程池初始设置线程数的百分比,当已经接入的会话数大于线程池初始设置数乘以该值对应的百分比后,表示当前线程池已经过载,触发过载逃生kill会话并禁止新连接接入,取值为0~INT_MAX,设置为多少表示百分之多少。

默认值:'0,0',表示关闭线程池逃生功能。

示例:

resilience_threadpool_reject_cond = '100,200'

表示已经堆积的会话数超过线程池初始设置的线程数的200%后禁止新连接接入并kill堆积的会话,kill会话过程中会话数恢复到线程池初始设置的线程数的100%以下时停止kill会话并允许新连接接入。

  • 已经堆积的会话数可以通过查询pg_stat_activity视图有多少条数据获得,需要过滤少量后台线程;线程池设置的初试线程池线程数目可以通过查询thread_pool_attr参数获得。
  • 该参数如果设置的百分比过小,则会频繁触发线程池过载逃生流程,会使正在执行的会话被强制退出,新连接短时间接入失败,需要根据实际线程池使用情况慎重设置。
  • use_workload_manager参数关闭的情况下,如果打开bypass_workload_manager,则该参数也会生效,但是因为bypass_workload_manager是SIGHUP类型,reload方式设置后需要重启数据库才会使得当前功能生效。
  • recover_threadpool_percent和overload_threadpool_percent的值可以同时为0,除此之外,recover_threadpool_percent的值必须要小于overload_threadpool_percent,否则会设置不生效。
support.huaweicloud.com/distributed-devg-v2-gaussdb/gaussdb-12-1184.html