ここでは、JDBCのコネクションの以下について説明します。
InterstageのJNDIサービスプロバイダから取得したJDBCデータソースを使用した場合、JDBCのコネクションはプーリングされて再利用されます。
■コネクションプーリングの種別
コネクションプーリングには、以下の2種類があります。
Interstageでコネクションプーリング
Interstageでコネクションのプーリング制御を行うため、Interstage管理コンソールでコネクションプーリングの詳細設定ができます。プーリングされている情報を、Interstage管理コンソールのモニタ機能で参照できます。Oracleの分散トランザクションを使用する場合もInterstageでコネクションプーリングを行います。
JDBCドライバでコネクションプーリング
JDBCドライバでコネクションのプーリング制御を行うため、使用する各JDBCドライバの機能を使用して、コネクションプーリングの設定を行います。設定方法の詳細は、JDBCドライバのマニュアルを参照してください。
JDBCドライバ側でプーリング制御を行うため、Interstage管理コンソールで参照可能なJDBCデータソースのモニタ情報は、Oracleの場合は「コネクションプール情報」と「アプリケーションからのコネクション確立情報」、Oracle以外のデータベースは「アプリケーションからのコネクション確立情報」のみです。詳細はInterstage管理コンソールのヘルプを参照してください。
コネクションプーリングの機能概要については、“J2EE ユーザーズガイド”の“JDBC(データベース)のコネクション”を参照してください。
以下に、各データベースとコネクションプーリングの対応について記載します。
サポートしているデータベースは、使用しているプラットフォームによって異なります。“使用上の注意”の“アプリケーション実行時に必要なソフトウェア”を参照してください。
DB種別 | コネクションプーリング |
---|---|
Oracle | データソースの種類に“Interstageのコネクションプーリングを使用する”を選択している場合、Interstageでコネクションプーリングを行います。 |
Symfoware | データソースの種類に“Interstageのコネクションプーリングを使用する”を選択している場合、Interstageでコネクションプーリングを行います。 |
SQL Server | データソースの種類にかかわらずInterstageでコネクションプーリングを行います。 |
| データソースの種類に“Interstageでコネクションプーリングを行う”を選択している場合に、Interstageでコネクションプーリングを行います。 |
汎用定義 | データソースクラスがjava.sql.ConnectionPoolDataSourceインタフェースを実装している場合、Interstageでコネクションプーリングを行います。 |
■コネクションプーリングのチューニングパラメタ
IJServerの環境設定に指定可能なDBコネクション設定はデータベースタイプおよびデータソース種別によって設定が有効となる項目が異なります。以下の表を参照してください。
| Oracle | Symfoware | SQL Server | PostgreSQL | 汎用定義 | |||||
---|---|---|---|---|---|---|---|---|---|---|
Interstage | JDBC | XA | Interstage | JDBC | Interstage | Interstage | JDBC | Interstage | JDBC | |
トランザクションアイソレーションレベル | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
事前コネクト数 | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
最大コネクション数 | ○ | ○ | ○ | ○ | × | ○ | ○ | × | ○ | × |
コネクションタイムアウト | ○ | ○ | ○ | ○ | × | ○ | ○ | × | ○ | × |
アイドルタイムアウト | ○ | ○ | ○ | ○ | × | ○ | ○ | × | ○ | × |
コネクション使用監視時間 | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
Statementキャッシュサイズ | × | ○ | × | ○ | × | × | × | × | × | × |
Statement自動クローズ | × | × | × | ○ | × | × | × | × | × | × |
通信待ち時間 | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
異常時の再接続 | ○ | × | × | ○ | × | ○ | ○ | × | × | × |
インターバル時間 | ○ | × | × | ○ | × | ○ | ○ | × | × | × |
リトライ回数 | ○ | × | × | ○ | × | ○ | ○ | × | × | × |
○:有効 ×:無効
*1) Interstageのコネクションプーリングを使用する場合
*2) JDBCのコネクションプーリングを使用する場合
*3) 分散トランザクションを使用する場合
*4) データソースクラスがjava.sql.ConnectionPoolDataSourceインタフェースを実装している場合
*5) データソースクラスがjava.sql.ConnectionPoolDataSourceインタフェースを実装していない場合(JDBCでコネクションプーリングを行うかはJDBCドライバの実装に依存します。)
以下に、Interstage管理コンソールまたはisj2eeadminコマンドを使用して設定可能なパラメタを示します。
パラメタは、データソースごとにIJServerの環境設定で設定します。
パラメタ | 説明 | 設定値 |
---|---|---|
事前コネクト数 (注1)(注5) | 運用で必要なコネクションを、起動時にあらかじめ取得することにより、初回疎通時から2回目以降と同等の処理速度が得られます。 | 最大値:2147483647 |
最大コネクション数 | 最大コネクション数を抑止することにより、メモリ資源を抑止することが可能です。 データベースタイプがOracle、データソースの種類が「Oracleのコネクションプーリングを使用する」の場合、以下の注意があります。
| 最大値:2147483647 |
コネクションタイムアウト | 最大コネクション数分のコネクションすべてがJ2EEアプリケーションで使用中の状態で、コネクションの接続要求が来た場合に、プールにコネクションが返却されるのを待つ時間を指定します。
| 最大値:2147483647 |
アイドルタイムアウト | 使用されていないコネクションをタイムアウトで破棄することにより、無駄なメモリ資源を解放することができます。
| 最大値:2147483647 |
コネクション使用監視時間 (注2) | トランザクション開始前にアプリケーションが獲得したコネクションに対してクローズするまでの使用時間を監視します。 | 最大値:2147483647 |
タイムアウトしたコネクションはクローズする | コネクション使用監視時間使用時(コネクション使用監視時間が1以上)にタイムアウトしたコネクションを自動回収する場合はONにします。OFFにした場合、タイムアウトしたコネクションは自動回収されません。 |
|
Statementキャッシュサイズ | Statementのキャッシュサイズを指定します。 | 最大値:32000 |
Statement自動クローズ | ステートメントキャッシュ機能の使用時(Statementキャッシュサイズが1以上の場合)に、ステートメントのクローズをJDBCドライバが自動的に行うかどうかを指定します。 |
|
通信待ち時間 (注2) | 以下のSQL文実行の開始から終了までの時間を監視します。
SQL文の実行時間が一定時間超過しても復帰しなかった場合、警告メッセージがコンテナログやシステムログに出力されます。 | 最大値:2147483647 |
ログにSQL文を出力する | 通信待ち時間使用時(通信待ち時間が1以上)に、ログに出力する警告メッセージにSQL文を出力する場合はONにします。OFFにした場合、SQL文は出力されません。 |
|
異常時の再接続 | JDBCコネクションの自動再接続機能(注3)を使用するかどうかを指定します。 |
|
インターバル時間 | JDBCコネクションの自動再接続機能(注3)において、プーリングされているJDBCのコネクションが使用できない場合、またはDBMSへの接続に失敗した場合、再度接続を行うまでのインターバル時間を指定します。 | 最大値:2147483647 |
リトライ回数 | JDBCコネクションの自動再接続機能(注3)において、プーリングされているJDBCのコネクションが使用できない場合、またはDBMSへの接続に失敗した場合、再度接続を試みる回数を指定します。 | 最大値:2147483647 |
CMP2.0のEJBアプリケーションを配備したIJServerを起動する場合、起動時にDBMSの識別子長の最大値をチェックします。このため、事前コネクト機能を使用しない場合にも1コネクションだけDBMSへ接続します。
Interstageでコネクションをプーリングする場合には、起動処理完了後にコネクションが切断されます。
コネクション使用監視時間、および通信待ち時間のタイムアウト値は以下の計算式を参考に設定してください。
アプリケーション最大処理時間 > コネクション使用監視時間 > 通信待ち時間 |
Symfowareの場合は、Connection Managerの機能を使用することで、データベースサーバのダウンおよび通信回線の異常発生時にも同等の運用を行うことが可能です。Connection Managerの詳細については、Symfoware Serverのマニュアル“Connection Managerユーザーズガイド”を参照してください。
Oracleの場合、事前コネクトの獲得タイミングは以下の表のようになります。
Oracleのデータソース種別および設定 | 事前コネクト取得タイミング | |
---|---|---|
Interstageでコネクションプーリング | DBコネクション設定の“事前コネクト数”に1以上の値を設定 | IJServer起動時 |
上記設定をしない場合 | 事前にコネクションは確立されません | |
Oracleでコネクションプーリング | DBコネクション設定の“事前コネクト数”に1以上の値を設定 | IJServer起動時 |
DBコネクション設定の“事前コネクト数”を設定せず(デフォルト値:0)、暗黙的接続キャッシュのプロパティの“InitialLimit”に1以上の値を設定 | 初回getConnection時 | |
上記以外の場合 | 事前にコネクションは確立されません |
事前コネクト数を1以上に設定した場合、IJServer起動時にDBMSへ接続しますので対象のDBMSは起動されている必要があります。