ページの先頭行へ戻る
Interstage Application Server/Interstage Web Server チューニングガイド

5.2.5 JDBCのコネクション

  ここでは、JDBCのコネクションの以下について説明します。

  InterstageのJNDIサービスプロバイダから取得したJDBCデータソースを使用した場合、JDBCのコネクションはプーリングされて再利用されます。


コネクションプーリングの種別

  コネクションプーリングには、以下の2種類があります。

  コネクションプーリングの機能概要については、“J2EE ユーザーズガイド”の“JDBC(データベース)のコネクション”を参照してください。


  以下に、各データベースとコネクションプーリングの対応について記載します。
  サポートしているデータベースは、使用しているプラットフォームによって異なります。“使用上の注意”の“アプリケーション実行時に必要なソフトウェア”を参照してください。

DB種別

コネクションプーリング

Oracle

データソースの種類に“Interstageのコネクションプーリングを使用する”を選択している場合、Interstageでコネクションプーリングを行います。
“Oracleのコネクションプーリングを使用する”を選択している場合、JDBCドライバがコネクションプーリングを行います。

Symfoware

データソースの種類に“Interstageのコネクションプーリングを使用する”を選択している場合、Interstageでコネクションプーリングを行います。
“Symfowareのコネクションプーリングを使用する”を選択している場合、JDBCドライバでコネクションプーリングを行います。

SQL Server

データソースの種類にかかわらずInterstageでコネクションプーリングを行います。



PostgreSQL

データソースの種類に“Interstageでコネクションプーリングを行う”を選択している場合に、Interstageでコネクションプーリングを行います。
“PostgreSQLでコネクションプーリングを行う”の場合は、JDBCドライバがコネクションプーリングを行います。

汎用定義

データソースクラスがjava.sql.ConnectionPoolDataSourceインタフェースを実装している場合、Interstageでコネクションプーリングを行います。
上記以外の場合、JDBCドライバがコネクションプーリングを行うかどうかはJDBCドライバの実装に依存します。


コネクションプーリングのチューニングパラメタ

  IJServerの環境設定に指定可能なDBコネクション設定はデータベースタイプおよびデータソース種別によって設定が有効となる項目が異なります。以下の表を参照してください。

  

Oracle

Symfoware

SQL Server

PostgreSQL

汎用定義

Interstage
(*1)

JDBC
(*2)

XA
(*3)

Interstage
(*1)

JDBC
(*2)

Interstage
(*1)

Interstage
(*1)

JDBC
(*2)

Interstage
(*4)

JDBC
(*5)

トランザクションアイソレーションレベル

事前コネクト数

最大コネクション数

×

×

×

コネクションタイムアウト

×

×

×

アイドルタイムアウト

×

×

×

コネクション使用監視時間

Statementキャッシュサイズ

×

×

×

×

×

×

×

×

Statement自動クローズ

×

×

×

×

×

×

×

×

×

通信待ち時間

異常時の再接続

×

×

×

×

×

×

インターバル時間

×

×

×

×

×

×

リトライ回数

×

×

×

×

×

×

○:有効  ×:無効

*1) Interstageのコネクションプーリングを使用する場合
*2) JDBCのコネクションプーリングを使用する場合
*3) 分散トランザクションを使用する場合
*4) データソースクラスがjava.sql.ConnectionPoolDataSourceインタフェースを実装している場合
*5) データソースクラスがjava.sql.ConnectionPoolDataSourceインタフェースを実装していない場合(JDBCでコネクションプーリングを行うかはJDBCドライバの実装に依存します。)

  以下に、Interstage管理コンソールまたはisj2eeadminコマンドを使用して設定可能なパラメタを示します。
  パラメタは、データソースごとにIJServerの環境設定で設定します。

パラメタ

説明

設定値

事前コネクト数 (注1)(5)

運用で必要なコネクションを、起動時にあらかじめ取得することにより、初回疎通時から2回目以降と同等の処理速度が得られます。
データベースタイプがOracle、データソースの種類が「Oracleのコネクションプーリングを使用する」で、暗黙的接続キャッシュの接続キャッシュ・プロパティにInitialLimitを指定し、かつ事前コネクト数が1以上の場合、事前コネクト数とInitialLimitの値が大きい方が有効となります。 (4)

最大値:2147483647
最小値:0
初期設定値:0

最大コネクション数

最大コネクション数を抑止することにより、メモリ資源を抑止することが可能です。
最大コネクション数すべてをJ2EEアプリケーションが使用している状態で接続リクエストがあった場合、コンテナは“コネクションタイムアウト”における設定時間の期間内で、プールにコネクションが返却されるのを待ちます。プールにコネクションが返却された場合にはそのコネクションを使用し、返却されなかった場合にはSQLExceptionを返却します。

データベースタイプがOracle、データソースの種類が「Oracleのコネクションプーリングを使用する」の場合、以下の注意があります。

  • 本項目は暗黙的接続キャッシュの接続キャッシュ・プロパティ MaxLimitの設定となります。

  • JDBCリソース定義時にキャッシュ・プロパティ MaxLimitを指定しても値は有効になりません。本項目で指定してください。

最大値:2147483647
最小値:1
初期設定値:64

コネクションタイムアウト

最大コネクション数分のコネクションすべてがJ2EEアプリケーションで使用中の状態で、コネクションの接続要求が来た場合に、プールにコネクションが返却されるのを待つ時間を指定します。
時間が超過してもコネクションが返却されなかった場合は、SQLExceptionが返却されます。0を指定した場合、コネクション待ち状態になるとすぐにSQLExceptionが返却されます。
データベースタイプがOracle、データソースの種類が「Oracleのコネクションプーリングを使用する」の場合、以下の注意があります。

  • 本項目は暗黙的接続キャッシュの接続キャッシュ・プロパティ ConnectionWaitTimeout の設定となります。

  • JDBCリソース定義時にキャッシュ・プロパティConnectionWaitTimeoutを指定しても値は有効になりません。本項目で指定してください。

最大値:2147483647
最小値:0
初期設定値:5
(単位:秒)

アイドルタイムアウト

使用されていないコネクションをタイムアウトで破棄することにより、無駄なメモリ資源を解放することができます。
ただし、事前コネクトで接続されたコネクションはアイドルタイムアウトの対象となりません。
データベースタイプがOracle、データソースの種類が「Oracleのコネクションプーリングを使用する」の場合、以下の注意が必要です。

  • 本項目は、暗黙的接続キャッシュの接続キャッシュ・プロパティ InactivityTimeout の設定となります。

  • JDBCリソース定義時にキャッシュ・プロパティ InactivityTimeout を指定しても値は有効になりません。本項目で指定してください。

  • タイムアウトを確認する時間間隔は、暗黙的接続キャッシュの接続キャッシュ・プロパティ PropertyCheckInterval の設定値となります。データソースの環境設定に PropertyCheckInterval を定義してください。プロパティの詳細はOracleのマニュアルを参照してください。

  • Oracleのコネクションプーリングを使用する場合、アイドルタイムアウト発生時のコネクション破棄はOracleのJDBCドライバで行われます。また事前コネクトで接続されたコネクションもアイドルタイムアウトの対象となります。

最大値:2147483647
最小値:0
初期設定値:600
(単位:秒)

コネクション使用監視時間 (2)

トランザクション開始前にアプリケーションが獲得したコネクションに対してクローズするまでの使用時間を監視します。
コネクションの使用時間が指定した時間を超過してもクローズされない場合、警告メッセージがコンテナログやシステムログに出力されます。
0を指定した場合、コネクション使用時間の監視は行いません。

最大値:2147483647
最小値:0
初期設定値:60
(単位:分)

タイムアウトしたコネクションはクローズする

コネクション使用監視時間使用時(コネクション使用監視時間が1以上)にタイムアウトしたコネクションを自動回収する場合はONにします。OFFにした場合、タイムアウトしたコネクションは自動回収されません。

  • する

  • しない
    (デフォルト)

Statementキャッシュサイズ

Statementのキャッシュサイズを指定します。
アプリケーションが実行したStatementをクローズせずにキャッシュするサイズを指定します。
0を指定した場合、Statementのキャッシュは行いません。Statementキャッシュ機能の詳細は“5.2.6 Statementキャッシュ機能”を参照してください。

最大値:32000
最小値:0
初期設定値:10

Statement自動クローズ

ステートメントキャッシュ機能の使用時(Statementキャッシュサイズが1以上の場合)に、ステートメントのクローズをJDBCドライバが自動的に行うかどうかを指定します。

  • する

  • しない
    (デフォルト)

通信待ち時間 (2)

以下のSQL文実行の開始から終了までの時間を監視します。

  • java.sql.Statement

    • execute(String)

    • execute(String, int)

    • execute(String, int[])

    • execute(String, String[])

    • executeBatch()

    • executeQuery(String)

    • executeUpdate(String)

    • executeUpdate(String, int)

    • executeUpdate(String, int[])

    • executeUpdate(String, String[])

  • java.sql.PreparedStatement

    • execute()

    • executeQuery()

    • executeUpdate()

SQL文の実行時間が一定時間超過しても復帰しなかった場合、警告メッセージがコンテナログやシステムログに出力されます。
0を指定した場合、通信待ち時間の監視は行いません。

最大値:2147483647
最小値:0
初期設定値:400
(単位:秒)

ログにSQL文を出力する

通信待ち時間使用時(通信待ち時間が1以上)に、ログに出力する警告メッセージにSQL文を出力する場合はONにします。OFFにした場合、SQL文は出力されません。

  • ON

  • OFF(デフォルト)

異常時の再接続

JDBCコネクションの自動再接続機能(注3)を使用するかどうかを指定します。
自動再接続機能を使用する場合、プーリングされているJDBCのコネクションが使用可能なコネクションであるかを判定し、使用できないコネクションの場合には自動的にDBMSに再接続します。

  • する(デフォルト)

  • しない

インターバル時間

JDBCコネクションの自動再接続機能(注3)において、プーリングされているJDBCのコネクションが使用できない場合、またはDBMSへの接続に失敗した場合、再度接続を行うまでのインターバル時間を指定します。
異常時の再接続を[する]にした場合のみ、指定した値が有効になります。

最大値:2147483647
最小値:1
初期設定値:10
(単位:秒)

リトライ回数

JDBCコネクションの自動再接続機能(注3)において、プーリングされているJDBCのコネクションが使用できない場合、またはDBMSへの接続に失敗した場合、再度接続を試みる回数を指定します。
異常時の再接続を[する]にした場合のみ、指定した値が有効になります。

最大値:2147483647
最小値:1
初期設定値:10
(単位:回数)

1)

CMP2.0のEJBアプリケーションを配備したIJServerを起動する場合、起動時にDBMSの識別子長の最大値をチェックします。このため、事前コネクト機能を使用しない場合にも1コネクションだけDBMSへ接続します。
Interstageでコネクションをプーリングする場合には、起動処理完了後にコネクションが切断されます。

2)

コネクション使用監視時間、および通信待ち時間のタイムアウト値は以下の計算式を参考に設定してください。

アプリケーション最大処理時間 > コネクション使用監視時間 > 通信待ち時間

注3)

Symfowareの場合は、Connection Managerの機能を使用することで、データベースサーバのダウンおよび通信回線の異常発生時にも同等の運用を行うことが可能です。Connection Managerの詳細については、Symfoware Serverのマニュアル“Connection Managerユーザーズガイド”を参照してください。

4)

Oracleの場合、事前コネクトの獲得タイミングは以下の表のようになります。

Oracleのデータソース種別および設定

事前コネクト取得タイミング

Interstageでコネクションプーリング

DBコネクション設定の“事前コネクト数”に1以上の値を設定

IJServer起動時

上記設定をしない場合

事前にコネクションは確立されません

Oracleでコネクションプーリング

DBコネクション設定の“事前コネクト数”に1以上の値を設定
ただし暗黙的接続キャッシュのプロパティに“InitialLimit”も設定されている場合は双方の値の大きい方の値分確立されます

IJServer起動時

DBコネクション設定の“事前コネクト数”を設定せず(デフォルト値:0)、暗黙的接続キャッシュのプロパティの“InitialLimit”に1以上の値を設定

初回getConnection時

上記以外の場合

事前にコネクションは確立されません

5)

事前コネクト数を1以上に設定した場合、IJServer起動時にDBMSへ接続しますので対象のDBMSは起動されている必要があります。