Confluence のデッドロックのトラブルシューティング
問題
Confluence の起動後、Confluence がハングするか速度が低下する。ログに次のようなエラー メッセージが表示される。
2009-04-07 05:38:57,333 WARN [Timer-0] [mchange.v2.async.ThreadPoolAsynchronousRunner] run com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@26b07663 -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
診断
このメッセージはデッドロックが確実にあるのを意味するわけではないため、診断が難しい場合があります。コードでは、新しいデータベース コネクションを確立しようとしたが利用できるものがないときに、APPARENT DEADLOCK メッセージが出力されます。
これにはさまざまな原因が考えられます (後述)。スレッド ダンプを 3 つ取得し、Confluence のパフォーマンスが低下し始めたときの Confluence の挙動を確認します。
実際にデッドロックが発生している場合、ご利用のデータベースに同様のログがほぼ確実に記録されています。データベースのログにデッドロックの記録がない場合、以降の原因の 1、2、または 3 である可能性があります。デッドロックの記録がある場合は以降の 4 または 5 である可能性があります。
サポート対象のデータベースと最新のドライバを使用していることを確認します。
原因とソリューション
デッドロックは次のようなさまざまな原因で発生します。
- データベース プールのコネクションが少なすぎる。「データベース コネクション プールの枯渇により高負荷状態となり Confluence の速度低下やタイムアウトが発生する」をご確認ください。
- 「"OutOfMemoryError Java heap space" エラーによって Confluence がクラッシュする」が発生している。診断とソリューションについてはこのページをご確認ください。
- スクリプトまたはリモート API がサーバーと通信している。リモート API スクリプトを無効化するか、
Administration >> General Information
でリモート API を無効化します。 - データベースが最適化されていない。
- MS SQL Server を利用している場合、この既知のデッドロックの問題の影響を受けているかどうかを確認します。
- ページを同時に追加するとデッドロックが発生する可能性があります。CONFSERVER-14789 をご確認ください。
Last modified on Mar 21, 2024
Powered by Confluence and Scroll Viewport.