押さえておきたいアプリケーションサーバのコネクションプール機能とその設定方法! 今回のコラムでは、アプリケーションサーバ おいて必須となる「 DataBase Connection Pool 」の設定について JBoss EAP 7 をベースに紹介してみたいと思います。
コネクションプールの設定を紹介する前に
今回は、アプリケーションサーバにおいて、データベースへのアクセス効率を高めるための機能、「コネクションプール」 についてご紹介をしたいと思います。アプリケーションサーバについて詳しく知りたい方は、下記のコラムをご覧ください。
コネクションプールについてご紹介をする前に、アプリケーションサーバとデータベースの関係を見てみたいと思います。
通常 Webアプリケーションではユーザ情報の保存にデータベースが用いられます。大半のWebアプリケーションでは RDBMS が使用されています。最近では NoSQL データベースも増えてきましたが…。
通常ユーザのWebアクセスに対してデータベースの情報を使用する場合、アプリケーションサーバとデータベース間では以下のようなやり取りが行われます。
- ネットワークコネクションの確立
- 接続ユーザの認証
- データベースコネクションの確立
- SQLクエリの発行
- SQLクエリの処理
- SQLクエリの結果送信
- データベースコネクションの切断立
- ネットワークコネクションの切断立
この様にWebアクセスでデータベースにおける接続には様々な手順が必要です。
アクセス毎にこの手順を繰り返すのは非常に効率が悪いと言えます。1度のアクセスで、サーバの性能にもよりますが数十ミリ秒~数百ミリ秒 の処理時間が必要となります。Webアプリケーション では同時に数百人が処理を行う必要があり、数ミリ秒の時間であってもレスポンスタイムに大きな影響を与えます。
DB処理に必要な時間は次のように考えることができます。
データベースアクセス時間(数十ミリ秒~数百ミリ秒)×同時アクセス数=DB処理に必要な時間
…大きなタイムロスになることがわかりますね。
コネクションプール機能を使用する事で、1~3 、7~8 の手順を省略 することができ、データベース接続の効率が向上します。
データベースのアクセス効率が向上することで、Webアクセスの応答性も向上します。
WebアプリケーションサーバとRDBMSで行われるやりとり
コネクションプールとは?
コネクションプール機能 は、アプリケーションサーバに搭載されている機能で、データベースへのコネクションをプーリング(備蓄、貸出) してデータベースへのアクセス効率を高める機能 です。
コネクションプール機能 は予め、データベースとのコネクションを作成してアプリケーションへ貸し出します。また、アプリケーションは、データベース処理を終えるとコネクションをプールに返却しますがコネクションは切断されません。このため、Webアクセス毎にデータベースコネクションを準備する必要がなくなり、データベースアクセスの効率を向上する事が出来ます。
コネクションプールを構成する要素は、JDBCドライバ、JNDIサービス、コネクションプール、コネクションプールを利用するアプリケーション です。
- JDBCドライバ
・DBに接続するためのライブラリ、DBメーカ等が提供します。
- JNDIサービス
・コネクションプールのを登録して、アプリケーションにコネクションプールへの接続オブジェクトを提供します。
- コネクションプール
・DBへのコネクションを管理するサービス
- コネクションプールを使用するアプリケーション
・Java Persistence API(JPA)
・JDBC でプログラムしたアプリケーションコンポーネント
・その他フレームワークのコンポーネント等
JBoss EAP 7 でのコネクションプール設定
本記事は、日本サード・パーティ株式会社(JTP)にて、執筆しています。
JTPは約30年に渡り、様々なベンダーのサポートを行う企業です。 設計、構築、開発、運用、ヘルプデスク、トレーニングなど、ITのライフサイクルを通して技術サービスを提供しています。
中でも、JTP の IT教育サービスでは、クラウド、Hadoop関連技術など、OSS の最新技術 トレーニングを数多く実施しています。
JTPでは、経験豊富なエンジニア、講師陣により、多くの技術記事を公開しております。
▼JTPの情報メディア「JTP Technology Port」はこちらから!