JDBC接続プールの接続数をチューニングするため、以下を設定できます。
プールサイズのスケールアップは、アプリケーションから接続要求を受けたときに必要に応じて実行されます。また、プールサイズのスケールダウンは、一定時間の間隔で定期的に実行されます。
JDBC接続プールは、リソースに対して接続要求を行うアプリケーションが動作するサーバーインスタンスごとに生成され、プールされる接続もサーバーインスタンスごとに生成されます。
プールされた接続は、IJServerクラスタまたはInterstage Java EE 6 DASサービスの停止時に削除されます。
初期および最小プールサイズ
最大プールサイズ
プールサイズ変更量
アイドルタイムアウト
最大待ち時間
これらの項目のチューニングは、asadminコマンドで設定できます。
JDBC接続プールを作成する時は、「9.1.14.1 create-jdbc-connection-poolサブコマンド」を参照してください。
また、JDBC接続プールの項目を更新する時は、「9.1.4 定義項目参照/更新」と「7.5.1 JDBC接続プールの定義項目」を参照してください。
以下に、プールサイズのスケールダウンおよびスケールアップの動作について説明します。
プールの定期監視(プールサイズのスケールダウン)
アプリケーションサーバでは、接続プールの状態を定期的に監視し、プールのリサイズを行います。以下の契機でプール監視用のリサイザがスケジューリングされ、アイドルタイムアウトの間隔でリサイズタスクを実行します。
プールの初期化時(注1)
「すべての障害で」を有効に設定し、接続障害が検出された時(注2)
注1)プールの初期化は、IJServerクラスタまたはInterstage Java EE 6 DASサービスがアプリケーションから最初の接続要求を受けたときに実行されます。
注2)接続障害と判断される条件は、「6.8.2 接続検証」を参照してください。
プールのリサイズタスクでは、アイドルタイムアウトまたは接続検証に失敗するような不正な接続をすべてプールから取り除き、プールサイズ変更量を超えない範囲でサイズをスケールダウンさせようとします。不正な接続の数によっては、プールサイズ変更量を超えるだけ削除されることがあります。削除の結果、プールサイズの最小値を下回ってしまった場合には、最小値に達するまで接続を補完します。
具体的には、以下の手順で処理を実行します。なお、説明のため以下の定義を使用します。
[プール内の接続数] = [使用されていない接続数] + [使用中の接続数] |
アイドルタイムアウトが発生した接続を削除
接続のタイムスタンプから、アイドルタイムアウトが発生した接続を検出しプールから削除します。
接続検証に失敗した接続を削除
検証に失敗した接続をプールから削除します。接続検証の詳細は、「6.8.2 接続検証」を参照してください。
最大でも削除予定数だけの接続を削除
以下の条件を満たす場合、使用されていない接続を検索し、[削除予定数]を最大としてプールから削除します。条件を満たさない場合は削除されません。
0 < [削除予定数] <= [削除許容数] |
プールサイズの修正
1.~3.の処理の結果、以下を満たした場合は、[初期および最小プールサイズ]に達するまで接続を作成します。
[プール内の接続数] < [初期および最小プールサイズ] |
接続要求に応じたプールサイズのスケールアップ
アプリケーションからの接続要求の処理時、プール内の使用されていない接続の中で以下の2つの条件を満たす接続が存在しない場合、プールサイズ変更量を超えない範囲でサイズをスケールアップさせます。
接続のマッチングに成功
接続検証に成功
スケールアップ時のプール内の動作は、以下です。次の2つの定義を説明の中で使用します。
[プール内の接続数] = [使用されていない接続数] + [使用中の接続数] |
条件 | プール内の動作 | |
---|---|---|
[初期および最小プールサイズ]未満 (注1) | [初期および最小プールサイズ]へ達するまで接続を生成します。 | |
[初期および最小プールサイズ]以上、[最大プールサイズ]未満 | [プールサイズ変更量]だけ生成可能な場合 | [プールサイズ変更量]だけ接続を生成します。 |
[プールサイズ変更量]だけ生成すると、[最大プールサイズ]を超えてしまう場合 | [生成許容数]だけ接続を生成します。 | |
[最大プールサイズ]と一致 | 接続は生成されません。(注2) |
注1) 接続検証の失敗により、プール内の使用されていない接続がすべて削除された場合などに該当します。
注2) ただし、接続のマッチングに失敗した未使用の接続が存在する場合、最大でプールサイズ変更量分だけ接続を再作成します。
接続のマッチング
接続のマッチングとは、プール内の接続の認証情報が接続要求時の認証情報と一致しているかを検証する機能です。接続要求時の認証情報の指定方法は、「5.7 リソースアクセス時の認証情報」を参照してください。