Confluence 5.0 のサポートは終了しています。
ドキュメントの最新バージョンを確認してください。
When a database server reboots or a network failure has occurred, all connections in the database connection pool are broken. To overcome this issue, Confluence would normally need restarting (or for Confluence WAR distributions, the application server running Confluence would need restarting).
しかし、単純な SQL クエリの実行によって、データベースのコネクションプール内のコネクションを有効にすることができます。プール内で切断されたデータベースコネクションが検出されると、新しいものが作成されてこれに置き替えられます。
これを行うため、データベース接続に任意の検証クエリを指定することができます。ダイレクト JDBC URL とデータソースのどちらを使用しているかに応じて、これは異なる設定になります。
データベース タイプに対する検証クエリ SQL の決定
各データベースの種類におけるバリデーションクエリは、それぞれ若干異なる SQL 構文の条件を有しています。バリデーションクエリは、プールからコネクションが回収される度に実行されるため、可能な限りシンプルなものが臨まれます。
各バリデーションクエリに推奨されるバリデーションクエリを以下に紹介します。:
データベースタイプ | バリデーションクエリ |
|---|---|
MySQL |
|
Microsoft SQL Server |
|
Oracle |
|
PostgreSQL |
|
ダイレクト JDBC を使用する検証クエリの有効化
Confluence がデータベースのコネクションプール内のデータベースコネクションを確実に有効にするには:
- Confluence をシャットダウンします。
- Edit the
confluence.cfg.xmlfile at the root of your Confluence Home Directory プロパティ「hibernate.c3p0」を追加して「true」を設定し、プロパティ「hibernate.c3p0.preferredTestQuery」を追加して上記で決定したデータベース タイプ用のクエリの値を設定します。詳細については、追加された2つのプロパティを持つファイルの以下の抜粋を参照してください。
confluence.cfg.xml (抜粋)... <property name="hibernate.c3p0.acquire_increment">1</property> <property name="hibernate.c3p0.idle_test_period">100</property> <property name="hibernate.c3p0.max_size">30</property> <property name="hibernate.c3p0.max_statements">0</property> <property name="hibernate.c3p0.min_size">0</property> <property name="hibernate.c3p0.timeout">30</property> <property name="hibernate.c3p0.validate">true</property> <property name="hibernate.c3p0.preferredTestQuery">select 1</property> ...confluence.cfg.xmlを保存します。- Confluence を再起動します。
データ ソースを使用する検証クエリの保証
Confluence がデータベースのコネクションプール内のデータベースコネクションを確実に有効にするには:
Confluence (もしくは Confluence を実行中の Tomcat インストレーション)をシャットダウンします。
- Edit the
conf/server.xmlfile in your Confluence Install Directory, or in the Tomcat installation's CATALINA_HOME directory. データ ソースについての Resource 要素を見つけ、「validationQuery」要素を追加し、上記で決定したデータベース タイプのクエリの値を指定します。詳細については、この追加されたファイルの以下の抜粋を参照してください。
server.xml (抜粋)... <Resource name="jdbc/confluence" auth="Container" type="javax.sql.DataSource" username="postgres" password="postgres" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/yourDatabaseName" maxActive="20" maxIdle="10" validationQuery="select 1" /> ...conf/server.xmlを保存します。- Confluence (もしくは Confluence を実行中の Tomcat インストレーション)を再起動します。
結果と考察
これで、データベースのコネクションプールにおける全てのコネクションが完全に失われても、Confluence 、あるいは Confluence を実行中のアプリケーションサーバを再起動させる事無くコネクションを回復できます。
パフォーマンス上の留意点:
このオプションを設定すると、パフォーマンスに影響が及びますが、クエリそのものは素早く実行されるため、パフォーマンス上の全体的な影響は最低 限に保たれます。更に、このクエリが実行されるのは、コネクションが成立した場合においてのみとなります。よって、リクエストの間ずっとコネクションが保 たれると、クエリは一回のリクエストに対して一度のみしか発生しません。
大きな Confluence インストレーションを実行している場合は、これがもたらすパフォーマンス上の影響を評価してから実装することをお勧めします。
