Cosminexus V9 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)

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

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

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

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

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

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

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

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

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

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

(a) 自動一時停止

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

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

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

(b) 手動一時停止

データベースノードのメンテナンスをする場合などに,cjsuspendpoolコマンドを実行することで,コネクションプールを手動で一時停止できます。手動一時停止は,メンバコネクションプールが開始状態,開始予約状態,自動一時停止状態,および自動一時停止予約状態の場合に実行できます。メンバコネクションプールが自動一時停止状態の場合にcjsuspendpoolコマンドを実行すると,手動一時停止状態になります。これによって,自動一時停止後に自動再開させない運用ができます。手動での一時停止手順については,「3.17.5(2) コネクションプールの一時停止」を参照してください。コマンドの詳細については,マニュアル「アプリケーションサーバ リファレンス コマンド編」の「cjsuspendpool(メンバコネクションプールの一時停止)」を参照してください。

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

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

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

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

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

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

(a) 自動再開

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

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

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

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

(b) 手動再開

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

手動での手動再開手順については,「3.17.5(3) コネクションプールの再開」を参照してください。コマンドの詳細については,マニュアル「アプリケーションサーバ リファレンス コマンド編」の「cjresumepool(メンバコネクションプールの再開始)」を参照してください。

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

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

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

ここでは,メンバコネクションプールの状態について説明します。

メンバコネクションプールの状態は,J2EEサーバやメンバリソースアダプタを再起動しても維持されます。コネクションプールの状態を確認する方法については,「3.17.5(1) コネクションプールの状態の確認」を参照してください。

なお,メンバリソースアダプタ以外のコネクションプールには状態はありません。

(a) コネクションプールの状態遷移

メンバコネクションプールの状態遷移を次の図に示します。

図3-64 メンバコネクションプールの状態遷移(手動で一時停止を実行する場合)

[図データ]

図3-65 メンバコネクションプールの状態遷移(自動で一時停止が実行される場合)

[図データ]

なお,J2EEサーバの開始時にコネクションプールが再開中状態,または閉塞状態の場合,コネクションプールは一時停止状態に遷移します。

それぞれの状態の詳細について次の表に示します。

表3-74 メンバコネクションプールの状態

番号 状態 メッセージに表示される状態 説明
1 開始状態 running コネクションプールが処理を受け付けている状態です。ルートリソースアダプタへのコネクション取得要求時には,開始状態のコネクションプールだけに処理が行われます。
2 開始予約状態 runningReserved コネクションプールが開始状態のときにリソースアダプタが停止された状態です。開始予約状態のコネクションプールは,リソースアダプタの開始時に開始状態になります。リソースアダプタをデプロイした直後は,この状態になります。
3 自動再開中状態 resumingAutomatically 自動再開機能によって,コネクションプールが再開処理を行っている状態です。再開処理が成功すると開始状態になります。再開処理が失敗すると,自動一時停止状態に戻ります。自動再開中状態のコネクションプールには,ルートリソースアダプタへのコネクション取得要求時に処理が出されません。
4 手動再開中状態
  • resumingManuallyFromSuspendedAutomatically
  • resumingManuallyFromSuspendedManually
  • resumingManually
自動一時停止状態,または手動一時停止状態のときにcjresumepoolコマンドを実行して,コネクションプールが再開処理を行っている状態です。再開処理が成功すると,開始状態になります。再開処理が失敗すると,コマンド実行前の状態に戻ります。手動再開中状態のコネクションプールには,ルートリソースアダプタへのコネクション取得要求時に処理が出されません。
5 自動閉塞状態 blockedAutomatically 自動一時停止機能によって,コネクションプールが閉塞されて,一時停止処理を行っている状態です。一時停止処理が完了すると,自動一時停止状態になります。自動閉塞状態のコネクションプールには,ルートリソースアダプタへのコネクション取得要求時に処理が出されません。
6 手動閉塞状態 blockedManually cjsuspendpoolコマンドによって,コネクションプールが閉塞され,一時停止処理を行っている状態です。一時停止処理が完了すると,手動一時停止状態になります。手動閉塞状態のコネクションプールには,ルートリソースアダプタへのコネクション取得要求時に処理が出されません。
7 自動一時停止状態 suspendedAutomatically 自動一時停止機能によって,コネクションプールが一時停止された状態です。コネクションプール内にコネクションは存在しません。自動一時停止状態のコネクションプールには,ルートリソースアダプタへのコネクション取得要求時に処理が出されません。
8 手動一時停止状態 suspendedManually cjsuspendpoolコマンドによって,コネクションプールが一時停止された状態です。コネクションプール内にコネクションは存在しません。手動一時停止状態のコネクションプールには,ルートリソースアダプタへのコネクション取得要求時に処理が出されません。
9 自動一時停止予約状態 suspendedAutomaticallyReserved コネクションプールが自動一時停止状態のときにリソースアダプタを停止した状態です。自動一時停止予約状態のコネクションプールは,リソースアダプタの開始時に自動一時停止状態になります。なお,このとき,コネクションプールのウォーミングアップ機能は無効になります。
10 手動一時停止予約状態 suspendedManuallyReserved コネクションプールが手動一時停止状態のときにリソースアダプタを停止した状態です。手動一時停止予約状態のコネクションプールは,リソースアダプタの開始時に手動一時停止状態になります。なお,このとき,コネクションプールのウォーミングアップ機能は無効になります。

注 番号は,図3-64および図3-65中の番号を示します。

(b) コネクションプールの状態によるコマンド実行の可否

コネクションプールの状態によって,実行できるコマンドと実行できないコマンドがあります。コネクションプールの状態ごとに,各コマンドの実行の可否を次に示します。

表3-75 コネクションプールの状態によるコマンド実行の可否

コマンド コネクションプールの状態
開始 開始予約 自動再開中/手動再開中 自動閉塞/手動閉塞 自動一時停止 手動一時停止 自動一時停止予約 手動一時停止予約
cjstartrar × × × × ×
cjstoprar × ※1 ※2 × ×
cjclearpool × × × × × × ×
cjlistrar
cjsuspendpool × × × ×
cjresumepool × × × ×
cjstopsv(通常停止時) ※1 ※2
cjstopsv(強制停止時)

(凡例) ○:実行できる △:制限あり ×:実行できない

注※1 コマンドは受け付けられますが,開始または一時停止状態になってから処理が実行されます。

注※2 コマンドは受け付けられますが,一時停止状態になってから処理が実行されます。


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

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

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

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

なお,開始状態のメンバコネクションプールがない場合にコネクション取得要求があったときには,コネクションの取得に失敗します。

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

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