3.5 コネクション管理について
コネクションの管理とは、JDBCコネクションプールを利用して、データベースサーバに対するコネクションを管理することです。JDBCコネクションプールにプールするコネクション数を管理することで、データベースアクセスの処理時間を低減できます。また、コネクション障害検知機能を使用することで、JDBCコネクションプールのコネクションに障害が発生した場合でも、処理を続けることができます。
コネクション管理の仕組み
データベースサーバへの接続で使用するコネクションの生成は時間が掛かる処理です。そこで、JDBCコネクションプールに一定数のコネクションをプールしておきます。コネクションの取得要求を受け取ると、JDBCコネクションプールにプールしていたコネクションを返して、コネクションを使い回すことで、データベースアクセスに掛かる処理時間を低減します。
コネクション管理の仕組みを次の図に示します。
コネクション障害検知機能
コネクション障害検知機能では、コネクションの取得要求を受け取ると、JDBCコネクションプールのコネクションに障害が発生していないかをチェックして、障害が発生していないコネクションを返します。これによって、リソースダウンやネットワーク障害などでコネクションに障害が発生した場合でも、障害が発生していないコネクションを利用して処理を続けることができます。
コネクション障害検知機能を次の図に示します。
コネクションプールのコネクション数の最大値が多い場合、メモリを多く必要とします。
サーバ障害やネットワーク障害などが多発した場合、コネクション障害検知を行う際に必要なリソースが不足し、コネクション取得要求がエラーとなります。この場合、KDKD20004-Wのメッセージが出力されます。また、コネクション障害検知でタイムアウトが発生してコネクションを破棄する場合も、障害が多発してコネクションの破棄に必要なリソースが不足すると、コネクションの破棄で応答が返らなくなるおそれがあります。この場合、KDKD20001-Wのメッセージが出力されます。
なお、コネクション障害検知機能を使用する場合、障害が発生したコネクションを破棄する前に新たにコネクションを確立することで、DBMSの最大同時接続数が一時的にコネクションプールのサイズを超えることがあります。
JDBCコネクションプールのチューニング
コネクションプールを作成する際、物理コネクションの接続先データベースで設定されているコネクション数がコネクションプールの最大サイズ以上となるように、値をチューニングする必要があります。
接続先データベースで設定されているコネクション数については、各データベースのマニュアルを参照してください。
DBMSの最大同時接続数の見積もり式
DBMSの最大同時接続数の見積もり式を示します。JDBCコネクションプールを複数利用する場合の最大同時接続数は、この式の総和になります。
DBMSの最大同時接続数=JDBCコネクションプールのサイズ+α※
- 注※
-
+αは、DBMSの最大同時接続数が、一時的にJDBCコネクションプールのサイズを超えるおそれがあることを示します。コネクション障害検知機能を使用する場合、障害が発生したコネクションを破棄する前に新たにコネクションを確立することで、DBMSの最大同時接続数が一時的にコネクションプールのサイズを超えることがあります。なお、+αは、最大でコネクションプールのサイズと同じになります。