メモリの使用量と要件
Confluence のパフォーマンスおよびメモリ使用量の管理は、実際には利用可能なリソース次第です。Confluence はキャッシュ用のメモリが多ければ実行速度が上がりますが、適切にチューニングすることで低メモリ容量の環境でも快適に実行できるようになっています。ご使用の Confluence サイトで最大のパフォーマンスを実現するためのヒントを以下に紹介します。
Confluence で利用可能なメモリ容量を増量する
Confluence を実行するために一般的に使用される Web アプリケーションサーバーで使用可能なメモリを増量する方法について詳細は、「JIRA メモリの増量」を参照してください。
組み込みデータベース
Confluence に同梱されている組み込み HSQL データベースは、Confluenceサーバーの実行中、基本的にメモリ内のすべてのデータを保持します。メモリが不足しそうな場合、Confluence を外部のデータベースに移行することを検討してください。
キャッシング
既定では、Confluence はデータのための大容量インメモリキャッシュを保持して、応答とユーザーエクスペリエンスを向上させます。トレードオフはメモリ要件を増加してキャッシュをサポートすることです。大規模な Confluence サイトの管理者は、パフォーマンスを向上させるためにサイトのキャッシュのサイズを設定する必要が生じる場合もあります。
ニーズを満たすために Confluence のキャッシュをカスタマイズするには、「キャッシュのチューニング」を参照してください。
Confluence で使用可能なメモリ量を増量するには、「使用可能なメモリを増やしてメモリ不足エラーを修正する方法」を参照してください。
メールエラーキュー
Confluence は送信に失敗したすべてのメールのコピーを内部エラーキュー内に保管します。ネットワーク接続問題など、偶発的な障害が発生した場合は、問題が修正された後、このキューのメールを手動で再送信できます。特定の状況下で、メールキューは大容量のオブジェクトで満杯になることがあります。キューは定期的にフラッシュされますが、多くのメールエラーがあると、メモリ使用量でスパイクが生じる場合があります。
添付ファイル
大きなサイズの添付ファイルのインデックス作成では、添付ファイルをメモリに読み込む必要があります。大きなサイズの添付ファイルの場合、これは、システムリソースに一時的に負荷がかかる原因になり得ます。その結果、添付ファイルを完全にメモリに読み込むことができずにインデックス作成が失敗する場合もあります。
システムのバックアップと復元
Confluence のバックアップと復元プロセスの規模は、データのサイズに比例します。これは、データ量が利用可能なメモリ容量を超える可能性がある、大規模な Confluence インスタンスで影響する可能性があります。バックアップまたは復元プロセス中に OutOfMemoryError
エラーが発生した場合、本番環境のバックアップ戦略を選択することを強くお勧めします。
バックアップの復元中に OutOfMemoryError
エラーが発生し、メモリを増量することによってこの問題を解決したい場合、プロセスのためにどれぐらいのメモリを増量すればよいでしょうか。これについては、バックアップの entities.xml
ファイルのサイズを調べることをおすすめします。このファイルには Confluence が読み込もうとしているすべてのデータがあるため、少なくともそれだけの容量が必要になります。これとは別に 64 ~ 128 Mb を追加して、Confluence の読み込みや動作のためのメモリ量を確保します。Confluence で使用可能なメモリ量を増やすには、「使用可能なメモリを増やしてメモリ不足エラーを修正する方法」を参照してください。
解決できない既知の問題
解決できないメモリの問題もいくつか存在します。たとえば、
- Oracle 10g JDBC ドライバーでのメモリリークがあります。これについてはできることはあまりありません。
- Tomcat 5 内部に起因すると思われる、かなりたちの悪いメモリリークが見つかりましたが、これは PowerPC で IBM JDK を使用している場合にのみ発生します。
If you are having problems that appear to result from a memory leak, log an issue on http://support.atlassian.com. Our memory profiler of choice is YourKit. It would be helpful to us if you can provide us with a memory dump from that tool showing the leak.
一部のアクションに対する応答に長時間を要している Confluence の問題
Confluence で偶発的に中断が生じる一般的な原因は、JVM が実行するガベージコレクションです。これが発生しているかどうかを判別するには、詳細ガベージコレクションを有効にし、Java がメモリの解放に要する時間を調べます。Java がガベージコレクションを実行しているときに偶発的な中断が生じる場合、ガベージコレクションが中断の原因です。
詳細ガベージコレクションは、Java がガベージを収集している日時、所要時間、解放されたメモリ量を示すログステートメントを生成します。
gc (ガベージ コレクション) のロギングを有効にするには、Confluence を-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbose:gc -Xloggc:gc.log
オプションで開始します。gc.log
を gc.log
ファイルへの絶対パスと置き換えます。
たとえば、Windows サービスでは以下を実行します。
tomcat5 //US//Confluence ++JvmOptions="-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbose:gc -Xloggc:c:\confluence\logs\gc.log"
または、bin/setenv.sh
で次のように設定します。
export CATALINA_OPTS="$CATALINA_OPTS -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbose:gc -Xloggc:${CATALINA_BASE}/logs/gc.log"
bin/setenv.sh
を変更する場合、変更を有効にするには Confluence を再起動する必要があります。
ガベージコレクションの処理時間を最小化するためにどんなことができるでしょうか。ガベージコレクションがアプリケーションの実行に与える影響を最小化するために JVM を調整する方法の詳細は、http://java.sun.com/docs/hotspot/gc1.4.2/ を参照してください。