Confluence 5.7 のサポートは終了しています。
ドキュメントの最新バージョンを確認してください。
データベース サーバーがリブートしたり、あるいはネットワーク障害が発生したりすると、データベースのコネクションプール内のすべてのコネクションが切断され ます。この問題を解決するには、通常 Confluence の再起動が必要になります。
しかし、単純な SQL クエリの実行によって、データベースのコネクションプール内のコネクションを有効にすることができます。プール内で切断されたデータベースコネクションが検出されると、新しいものが作成されてこれに置き替えられます。
これを行うため、データベース接続に任意の検証クエリを指定することができます。ダイレクト JDBC URL とデータソースのどちらを使用しているかに応じて、これは異なる設定になります。
各データベースの種類におけるバリデーションクエリは、それぞれ若干異なる SQL 構文の条件を有しています。バリデーションクエリは、プールからコネクションが回収される度に実行されるため、可能な限りシンプルなものが臨まれます。
各バリデーションクエリに推奨されるバリデーションクエリを以下に紹介します。:
データベースタイプ | バリデーションクエリ |
|---|---|
MySQL |
|
Microsoft SQL Server |
|
Oracle |
|
PostgreSQL |
|
Confluence がデータベースのコネクションプール内のデータベースコネクションを確実に有効にするには:
confluence.cfg.xml file at the root of your Confluence Home and other important directoriesプロパティ「hibernate.c3p0」を追加して「true」を設定し、プロパティ「hibernate.c3p0.preferredTestQuery」を追加して上記で決定したデータベース タイプ用のクエリの値を設定します。詳細については、追加された2つのプロパティを持つファイルの以下の抜粋を参照してください。
...
<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 を実行中の Tomcat インストレーション)をシャットダウンします。
conf/server.xml file in your Confluence Install Directory, or in the Tomcat installation's CATALINA_HOME directory.データ ソースについての Resource 要素を見つけ、「validationQuery」要素を追加し、上記で決定したデータベース タイプのクエリの値を指定します。詳細については、この追加されたファイルの以下の抜粋を参照してください。
...
<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 を実行中のアプリケーションサーバを再起動させる事無くコネクションを回復できます。
パフォーマンス上の留意点:
このオプションを設定すると、パフォーマンスに影響が及びますが、クエリそのものは素早く実行されるため、パフォーマンス上の全体的な影響は最低 限に保たれます。更に、このクエリが実行されるのは、コネクションが成立した場合においてのみとなります。よって、リクエストの間ずっとコネクションが保 たれると、クエリは一回のリクエストに対して一度のみしか発生しません。
大きな Confluence インストレーションを実行している場合は、これがもたらすパフォーマンス上の影響を評価してから実装することをお勧めします。