Fixpack 8.5.5.2 or later

コンテキスト・プールの再作成中にすべてのスレッドがブロックされないようにする

この情報を使用して、LDAP サーバーが停止状態のときに、サーバーとの通信を試みたすべてのスレッドが、読み取りがタイムアウトになるまでブロックされないようにします。

問題

LDAP サーバーが停止状態のときに新しいスレッドがサーバーから読み取りを行おうとすると、例外がスローされます。すると、Virtual member manager は、LDAP コンテキスト・プールの再作成を試みます。コンテキスト・プールの再作成中には、すべての着信スレッドがブロックされます。 120 秒以内に接続が確立されないと、例外がスローされ、スレッドは処理を実行できるようになります。ただし、例外がスローされる前の 120 秒間、読み取りを要求しているスレッドはブロックされます。

解決方法

コンテキスト・プールの再作成中にすべてのスレッドがブロックされないようにするには、以下の 3 つのカスタム・プロパティーを構成して、ブロックされるスレッドの数を最小化するか、一定数のスレッドのみがブロックされるようにします。
  • minimizeContextPoolThreadBlock
    minimizeContextPoolThreadBlock カスタム・プロパティーは、LDAP サーバーが停止状態のときにサーバーからの読み取りが試行された場合の、スレッドのロック動作を定義するために使用します。このプロパティーの値を true に設定すると、読み取り操作が実行されたときに最小数のスレッドのみがブロックされ、残りのスレッドは待機なしに即時に失敗します。このプロパティーを false に設定すると、要求された LDAP に対してコンテキストが作成されるか、コンテキストの作成がタイムアウトになるまで、読み取りを要求するすべてのスレッドがブロックされます。コンテキストの作成時間のデフォルトは 120 秒です。
    情報
    データ型 Boolean
    デフォルト True
  • maxThreadsToBlock
    maxThreadsToBlock プロパティーは、minimizeContextPoolThreadBlock プロパティーと共に使用します。minimizeContextPoolThreadBlock プロパティーを true に設定すると、maxThreadsToBlock は、LDAP の読み取り操作が実行されたときにブロックするスレッドの最大数を決定します。
    情報
    データ型 Integer
    デフォルト 5
  • bindTimeout
    bindTimeout カスタム・プロパティーは、クイック・バインドのカウントの追跡にかける時間をミリ秒単位で指定します。トレース・ログが使用可能な場合、指定した時間を超過するバインドはログに追加されます。
    情報
    データ型 ミリ秒
    デフォルト 1000

bindTimeout カスタム・プロパティーに値をミリ秒単位で定義すると、バインドのタイムアウトをトレースできます。

統合 LDAP リポジトリー内でこれらのプロパティーを定義するには、setIdMgrCustomProperty コマンドを使用します。
$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 のリポジトリー ID、millsecondsクイック・バインドのカウントを追跡する秒数です。トレース・ログが使用可能な場合、指定した時間を超過するバインドはログに追加されます。
前のコマンドが完了したら、次のコマンドを使用して、構成を保存できます。
$AdminConfig save


利用条件 | フィードバック