データベース接続切断の問題を乗り越える方法
データベースサーバーが再起動するか、ネットワーク障害が発生すると、データベース接続プール内のすべての接続が切断されます。この問題を克服するには、通常 Confluence を再起動する必要があります。この状況を回避するために、Confluence は検証クエリを使用してデータベース接続を使用しようとする前に有効かどうかをチェックします。プール内で壊れた接続が検出された場合、新しい接続が作成されて置き換えられます。
この検証クエリは、 Confluence からの新規インストールでデフォルトで有効になります6。5とそれ以降)、古いバージョンの Confluence からアップグレードした場合は、以下の手順に従って手動で有効にできます。
この検証クエリを実行するにはいくつかの異なる方法がありますが、特定の検証クエリでドライバ構成を上書きするのではなく、データベースドライバに接続が存続しているかどうかを検証する方法を選択することをお勧めします。
直接 JDBC 接続を使用してバリデーション クエリを有効化する
Confluence がデータベースのコネクションプール内のデータベースコネクションを確実に有効にするには:
- Confluence を停止します。
<home-directory>confluence.cfg.xml
ファイルを編集します。<properties>
ブロックに次のプロパティを挿入します。<property name="hibernate.c3p0.validate">true</property>
confluence.cfg.xml
を保存します。- Confluence を再起動します。
これで、データベースのコネクションプールにおける全ての接続が完全に失われても、Confluence を再起動させる事無く接続を回復できます。
データソース接続を使用してバリデーション クエリを有効化する
Confluence がデータベースのコネクションプール内のデータベースコネクションを確実に有効にするには:
Confluence を停止します。
<installation-directory>/conf/server.xml
ファイル (またはデータソースを構成している場所) を編集します。データソースの Resource 要素と以下の PostgreSQL の例のように" testonBorrow" パラメーターを追加します。データベースタイプに適切な値を指定することを忘れないでください。
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" testOnBorrow="true" /> ...
conf/server.xml
を保存します。- Confluence を再起動します。
これで、データベースのコネクションプールにおける全ての接続が完全に失われても、Confluence を再起動させる事無く接続を回復できます。