FP8.5.5.2 或更高版本

确保在重新创建上下文池期间并非所有线程都会被阻塞

可使用该信息确保当 LDAP 服务器处于关闭状态时,并非所有正在尝试与该服务器通信的所有线程都会被阻塞,直到线程超时。

问题

如果 LDAP 服务器处于关闭状态,那么当任何新线程尝试从该服务器进行读操作时,都会抛出异常。然后,virtual member manager 会尝试重新创建 LDAP 上下文池。在重新创建上下文池期间,所有入局线程都会被阻塞。如果无法在 120 秒内建立连接,那么会抛出异常,并且这些线程能够完成其处理。但是,所有请求线程处于阻塞状态的时间会达到 120 秒,直到抛出异常。

解决方案

要确保在重新创建上下文池期间并非所有线程都会被阻塞,可配置下列三个定制属性,以最大程度地减少线程数或要阻塞的准确线程数:
  • minimizeContextPoolThreadBlock
    当 LDAP 服务器处于关闭状态并且尝试了从该服务器进行读操作时,系统会使用 minimizeContextPoolThreadBlock 定制属性定义线程锁定行为。当该属性的值设置为 true 时,仅会对读操作阻塞最小数目的线程,并且其余线程会立即失败而不进行等待。如果该属性设置为 false,那么会阻塞每个进行读请求的线程,直到针对所请求 LDAP 创建了上下文或上下文创建遇到超时。上下文创建的缺省时间为 120 秒。
    信息
    数据类型 Boolean
    缺省值 True
  • maxThreadsToBlock
    maxThreadsToBlock 属性与 minimizeContextPoolThreadBlock 属性一起使用。如果 minimizeContextPoolThreadBlock 属性设置为 true,那么 maxThreadsToBlock 会确定当执行 LDAP 读操作时必须阻塞的最大线程数。
    信息
    数据类型 整数
    缺省值 5
  • bindTimeout
    bindTimeout 定制属性指定用于跟踪快速绑定计数的时间,以毫秒计。如果启用了跟踪日志,那么任何所用时间超过指定时间的绑定都会添加到日志。
    信息
    数据类型 毫秒
    缺省值 1000

可在 bindTimeout 定制属性中定义该值(以毫秒计),以跟踪绑定超时。

请使用 setIdMgrCustomProperty 命令在联合 LDAP 存储库中定义这些属性。
$AdminTask setIdMgrCustomProperty {-id <LDAP_repos_ID> -name minimizeContextPoolThreadBlock -value true}

$AdminTask setIdMgrCustomProperty {-id <LDAP_repos_ID> -name maxThreadsToBlock -value 5}

$AdminTask setIdMgrCustomProperty {-id <LDAP_repos_ID> -name bindTimeout -value <millseconds>}
其中 LDAP_repos_ID 是 virtual member manager 中配置的 LDAP 的存储库标识,millseconds 用于跟踪快速绑定计数。如果启用了跟踪日志,那么所用时间超过指定时间的绑定会添加到日志。
在前一命令完成之后,可通过使用以下命令来保存配置:
$AdminConfig save


使用条款 | 反馈