Cosminexus 機能解説

[目次][用語][索引][前へ][次へ]

9.12.2 クラスタコネクションプールの動作

コネクションプールをクラスタ化した場合に使用できる機能と動作について説明します。クラスタコネクションプールでは次の機能を実行できます。

また,コネクションプールの状態,およびコネクションの取得要求を受けたときの,コネクションプールの選択方式についても説明します。

<この項の構成>
(1) コネクションプールの一時停止
(2) コネクションプールの再開
(3) コネクションプールの状態
(4) コネクションプールの選択方式

(1) コネクションプールの一時停止

メンバコネクションプールを閉塞および一時停止できます。一時停止を実行すると,メンバコネクションプールが閉塞し一時停止します。

J2EEアプリケーションがルートリソースアダプタにコネクション取得要求をした場合,閉塞または一時停止したメンバコネクションプールにはコネクション取得要求は出されません。

次の場合にメンバコネクションプールを一時停止してください。

なお,一時停止の方法には次の2とおりがあります。

(a) 自動一時停止

データベースノードの障害時にメンバコネクションプールを自動で一時停止できます。障害を検知すると,メンバコネクションプールは自動的に閉塞状態になり,そのあと一時停止します。

コネクションの取得時に次の現象が発生した場合,データベースノードに障害が発生したと判断し,メンバコネクションプールが自動的に一時停止します。

この機能は,デフォルトで有効となっています。有効/無効の設定は,ルートリソースアダプタのプロパティとして設定します。リソースアダプタの設定については,マニュアル「Cosminexus アプリケーション設定操作ガイド」のリソースアダプタのプロパティ定義についての説明を参照してください。

(b) 手動一時停止

データベースノードのメンテナンスをする場合などに,cjsuspendpoolコマンドを実行することで,コネクションプールを手動で一時停止できます。手動一時停止は,メンバコネクションプールが開始状態,開始予約状態,自動一時停止状態,および自動一時停止予約状態の場合に実行できます。メンバコネクションプールが自動一時停止状態の場合にcjsuspendpoolコマンドを実行すると,手動一時停止状態になります。これによって,自動一時停止後に自動再開させない運用ができます。

コマンドの詳細については,マニュアル「Cosminexus リファレンス コマンド編」を参照してください。

注意
cjsuspendpoolコマンドで手動一時停止したコネクションプールは,自動で再開されません。手動で再開してください。

(2) コネクションプールの再開

一時停止したメンバコネクションプールを再開できます。J2EEアプリケーションからルートリソースアダプタにコネクション取得要求をした時に,再開したメンバコネクションプールには再びコネクションの取得要求が出されるようになります。

なお,コネクションプールを再開するには,未使用のコネクション管理スレッドの個数が,コネクションプールのコネクション数の最大数以上必要です。

次の場合にコネクションプールを再開してください。

再開の方法には次の2とおりがあります。

(a) 自動再開

自動一時停止したメンバコネクションプールを自動で再開できます。

自動一時停止したメンバコネクションプールでは,データベースノードの状態をチェックするために,一定間隔で物理コネクションの取得要求を出します。このとき,コネクションの取得に成功すると,データベースノードが回復したと判断し,自動的に再開処理が行われます。また,自動一時停止したメンバコネクションプールを自動再開させない運用にするには,自動一時停止後に手動一時停止してください。再開時には,手動再開してください。

なお,ルートリソースアダプタが停止状態の場合,自動再開処理は行われません。ただし,メンバコネクションプールが自動再開中状態の場合にルートリソースアダプタを停止したときは,実行中の自動再開処理が継続されます。

この機能は,デフォルトで有効となっています。有効/無効の切り替えや,データベースノードの状態をチェックする間隔の設定は,ルートリソースアダプタのプロパティとして設定します。リソースアダプタの設定については,マニュアル「Cosminexus アプリケーション設定操作ガイド」のリソースアダプタのプロパティ定義についての説明を参照してください。

(b) 手動再開

自動一時停止または手動一時停止したコネクションプールを手動で再開できます。手動再開するには,cjresumepoolコマンドを使用します。手動再開は,コネクションプールが次の状態の場合に実行できます。

コマンドの詳細については,マニュアル「Cosminexus リファレンス コマンド編」を参照してください。

(3) コネクションプールの状態

コネクションプールの状態は,メンバコネクションプールの場合だけ存在するものです。なお,コネクションプールの状態は,J2EEサーバやリソースアダプタの再起動後も維持されます。

メンバコネクションプールの状態には,次の種類があります。メンバコネクションプールの状態の詳細,およびコネクションプールの一時停止や再開をした場合の状態遷移については,マニュアル「Cosminexus システム運用ガイド」を参照してください。

メンバコネクションプールの状態は次の方法で確認できます。手動一時停止または手動再開をする場合は,コマンドを実行する前にコネクションプールの状態を確認してください。

コマンドの詳細については,マニュアル「Cosminexus リファレンス コマンド編」を参照してください。

(4) コネクションプールの選択方式

J2EEアプリケーションがルートリソースアダプタにコネクションの取得要求を出した時に,メンバコネクションプールが一つ選択されます。このときメンバコネクションプールが選択される方式は,ラウンドロビン方式です。

選択対象のコネクションプールは,開始状態のメンバコネクションプールです。コネクションに空きがあるメンバコネクションプールが優先的に選択されます。

ただし,コネクション枯渇状態のメンバコネクションプールしかない場合は,コネクション取得要求が待ち状態になります。さらに,コネクション取得待ちのタイムアウトが発生すると,コネクションの取得に失敗します。また,コネクション取得要求が待ち状態の場合にコネクションプールが閉塞されたときは,コネクション取得要求が再開され,次の優先度のメンバコネクションプールからコネクションの取得を試みます。すべてのメンバコネクションプールからコネクションが取得できない場合には,コネクションの取得に失敗します。

なお,各メンバコネクションプールの最大サイズを設定する場合,次の指針に従って設定します。

メンバコネクションプールの最大サイズ(数)=システムで許容される最大同時接続数÷データベースノードの数