データベース接続切断の問題を乗り越える方法
データベース サーバーがリブートしたり、あるいはネットワーク障害が発生したりすると、データベースのコネクションプール内のすべてのコネクションが切断され ます。この問題を解決するには、通常 Confluence の再起動が必要になります。
しかし、単純な SQL クエリの実行によって、データベースのコネクションプール内のコネクションを有効にすることができます。プール内で切断されたデータベースコネクションが検出されると、新しいものが作成されてこれに置き替えられます。
これを行うため、Confluence はデータベース接続に検証クエリを指定することができます。新しいインストールでは既定で有効化 されていますが (Confluence 6.5 以降)、古い Confluence バージョンからアップグレードした場合は、次の手順でこれを手動で有効化することを選択できます。
データベースに対するバリデーション クエリ SQL の決定
各データベースの種類におけるバリデーション クエリは、それぞれ若干異なる SQL 構文の条件を有しています。バリデーション クエリは、コネクションプールから接続が取得される度に実行されるため、可能な限りシンプルなものが望まれます。
各バリデーションクエリに推奨されるバリデーションクエリを以下に紹介します。:
データベースタイプ | バリデーションクエリ |
---|---|
MySQL |
|
Microsoft SQL Server |
|
Oracle |
|
PostgreSQL |
|
直接 JDBC 接続を使用してバリデーション クエリを有効化する
Confluence がデータベースのコネクションプール内のデータベースコネクションを確実に有効にするには:
- Confluence を停止します。
<home-directory>confluence.cfg.xml
ファイルを編集します。対象のデータベースに次のプロパティを挿入します。
PostgreSQL、SQL Server、および MySQL の場合<property name="hibernate.c3p0.preferredTestQuery">select 1</property>
Oracle の場合<property name="hibernate.c3p0.preferredTestQuery">select 1 from dual</property>
confluence.cfg.xml
を保存します。Confluence 5.10.3 以前を使用している場合、データベースの検証クエリーを含む、以下の システム プロパティ を追加する必要があります。
例:-Dc3p0.preferredTestQuery="select 1"
- Confluence を再起動します。
これで、データベースのコネクションプールにおける全ての接続が完全に失われても、Confluence を再起動させる事無く接続を回復できます。
データソース接続を使用してバリデーション クエリを有効化する
Confluence がデータベースのコネクションプール内のデータベースコネクションを確実に有効にするには:
Confluence を停止します。
<installation-directory>/conf/server.xml
ファイル (またはデータソースを構成している場所) を編集します。データ ソースについての Resource 要素を見つけ、下記の PostgreSQL の例のように、「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" maxTotal="60" maxIdle="20" validationQuery="select 1" /> ...
conf/server.xml
を保存します。- Confluence を再起動します。
これで、データベースのコネクションプールにおける全ての接続が完全に失われても、Confluence を再起動させる事無く接続を回復できます。