Cosminexus 機能解説

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

9.10.1 コネクションプーリング

サーブレット,JSP,EJBなどのJ2EEコンポーネントからのリソースアクセス量に応じて,リソースコネクション(JDBCコネクション,およびリソースアダプタのコネクション)をプーリングする機能です。コネクションをプーリングすることによって,ユーザアプリケーションからのリソース接続要求を高速に処理します。

<この項の構成>
(1) 前提条件
(2) コネクションプールのウォーミングアップ
(3) コネクションプールの生成および初期化
(4) コネクションプールの終了処理
(5) 例外が発生したコネクションの破棄
(6) コネクションプール利用上の注意事項
(7) コネクション数調節機能

(1) 前提条件

コネクションプーリング機能は,リソースの種類,接続方法の組み合わせによって,使用できる場合とできない場合があります。コネクションプーリング機能の使用について次の表に示します。

表9-32 コネクションプーリング機能の利用可否

リソースの種類 接続方法 利用可否
データベース DB Connector
データベース上のキュー DB Connector for Cosminexus RMとCosminexus RM
OpenTP1 uCosminexus TP1 Connector
TP1/Message Queue - Access
SMTPサーバ メールコンフィグレーション ×
JavaBeansリソース ×
そのほかのリソース Connector 1.0仕様またはConnector 1.5仕様に準拠したリソースアダプタ

(凡例) ○:使用できる ×:使用できない −:該当しない


(2) コネクションプールのウォーミングアップ

コネクションプールのウォーミングアップとは,サーバ起動時またはリソースアダプタのスタート時に実行されるリソースのスタート処理で,あらかじめ,コネクションを,コネクションプールの設定で定義した最小値までプーリングする機能です。これによって,コネクションプールの使用を開始した直後の,コネクション要求のレスポンスを向上できます。

コネクションプールのウォーミングアップは,リソースアダプタの属性(プロパティ)として設定します。リソースアダプタのプロパティ定義で設定できることについては,マニュアル「Cosminexus システム構築ガイド」を参照してください。

(3) コネクションプールの生成および初期化

コネクションプールが生成・初期化されるタイミングは,リソースのスタート処理時です。コネクションプールのウォーミングアップ機能を有効にした場合,この時点でコネクションを生成します。コネクションプールのウォーミングアップ機能を無効にした場合,リソースのスタート時にコネクションは生成されず,最初のコネクション取得要求の発生時にコネクションを生成します。

コネクションプールの生成単位は次のとおりです。

(4) コネクションプールの終了処理

リソースのアンデプロイ時やJ2EEサーバの終了時は,コネクションプール内のすべてのコネクションを削除し,コネクションプール自体も削除します。なお,コネクションプールの終了処理では,コネクションに関するトランザクションなどがすべて決着済みのものとして処理します。

(5) 例外が発生したコネクションの破棄

データベース障害などが発生すると,コネクションプールに格納しているコネクションは使えなくなるため,コネクションプールから速やかに破棄する必要があります。

Application Serverは,コネクション,またはStatementのようなコネクションからの生成物に対する処理で例外が発生すると,コネクションクローズ時に該当コネクションをコネクションプールから破棄します。ただし,ローカルトランザクションの決着処理が正常終了した場合には,コネクションが正常であると判断するため破棄しません。

コネクションが正常に維持している状態で,コネクションやコネクションからの生成物で例外が発生すると,グローバルトランザクションを使用している場合には,トランザクションの決着処理が正常終了してもApplication Serverはコネクションをコネクションプールに戻さないで破棄します。そのため余分なコネクション生成が発生して性能に影響を与えることがあります。

(6) コネクションプール利用上の注意事項

コネクションプールを利用する場合の注意事項について説明します。

(7) コネクション数調節機能

コネクション数調節機能とは,コネクションプール内の不要なコネクションを指定したコネクションプールの最小値から最大値の範囲で段階的に減少させる機能です。この機能を有効にすると,実際の稼働実績に適した数までプール内のコネクション数を徐々に減らせるため,指定したコネクションプールの最小値を超えた場合のコネクション生成コストの削減やリソース資源の節約ができます。

また,コネクション数の調節時のコネクション削除処理に対して,応答時間にタイムアウトを設定できます。サーバ障害やネットワーク障害が発生してリソースからの応答が返らない場合,コネクション削除処理に対しても応答が返らなくなることがあります。このように,リソースから応答が返らない場合でも,タイムアウトを設定することでコネクション削除処理を終了し,処理を継続できます。

コネクション数調節機能の動作
コネクション数調節機能を使用すると,プール内のコネクション数は,前回コネクション数を調節したときから今回コネクション数を調節するまでの間に同時に使用されたコネクションの最大数で調節されます。コネクション数の調節時に,プール内コネクション数が同時に使用されたコネクションの最大数より多い場合は,コネクションの削除処理が動作します。例えば,現在,プール内にあるコネクション数が8の場合で,前回のコネクション数調整から今回のコネクション数調節までの間に同時に使用されたコネクションの最大数が5のときは,プール内のコネクション数が3多いため,コネクションプールから3コネクションが削除され,調節後のコネクション数は5となります。
なお,コネクション数調節機能は一定間隔で動作します。
コネクション数調節機能の設定については,マニュアル「Cosminexus システム構築ガイド」のリソースアダプタのプロパティ定義に関する説明を参照してください。

コネクション削除処理のタイムアウト
コネクション数調節機能のコネクション削除処理に対して,その応答時間にタイムアウトを設定できます。なお,コネクション削除処理のタイムアウト時間は5秒(固定)です。
ただし,コネクションプールの最大数が無制限の場合,コネクション削除処理のタイムアウトは無効になります。
また,コネクション削除処理のタイムアウトにはコネクション管理スレッドを使用するため,コネクション削除処理のタイムアウトを設定すると,設定しない場合に比べて多くのメモリを消費します。設定する場合は,必要なメモリ使用量を適切に見積もってください。
コネクション管理スレッドについては,「9.11.1 コネクションの障害検知」を参照してください。