Confluence Data Center のドキュメント変換サンドボックス
ページにファイルを挿入すると (Word ドキュメントや Excel スプレッドシートなど)、Confluence はページ内、またはプレビューでインラインで表示できるよう、ファイル コンテンツのサムネイル画像を生成します。これには非常に多くのメモリや CPU を消費するため、非常に複雑なファイルを処理する際にはメモリ不足エラーが発生することが確認されています。
Confluence Data Center では、Confluence が管理する独立したプロセス プールであるサンドボックスで変換を処理することで、影響を最小限に抑えることができます。これらのプロセスはクラッシュまたは終了する可能性がありますが、Confluence アプリケーションに影響を与えることなく、Confluence によって自動的に再起動されます。
非常に複雑なファイルを挿入し、プロセスがクラッシュまたは終了した場合、サムネイルの生成は失敗します。これが発生した場合、ページではプレースホルダー サムネイルが使用され、ファイル プレビューにはダウンロード オプションが表示されます。Confluence Data Center は、失敗したファイルに対してサムネイルの再生成を試行しません。複雑なファイルの例として、50 の埋め込み Excel グラフが含まれる PowerPoint プレゼンテーションなどがあります。ほとんどのファイルは問題なく処理されます。
ドキュメント変換サンドボックスは Confluence Data Center でのみ利用できます。
Confluence Server では、サムネイルの生成は Confluence によって行われるため、このページの情報は適用されません。
メモリ要件
クラスタ内の各 Confluence ノードに、サンドボックス用に十分なメモリがあることを確認する必要があります。既定では 2 つのサンドボックスが作成されます。そのため、Confluence で既に必要な容量に加えて 2 GB (サンドボックスあたり 1 GB) を空けておくことをお勧めします。
システム プロパティを使用して、各ノードで利用可能なサンドボックスの数を増やすことができます。数を増やした場合は、各ノードに十分な空きメモリがあることを確認してください。
サンドボックスを設定する
ほとんどの場合は既定値を利用できますが、システム管理者はシステム プロパティを使用してドキュメント変換の動作を変更できます。たとえば、プールのサイズ (サンドボックスの数) を増やしたり、プロセスが終了してサムネイルの生成に失敗するまでの時間を増やしたりすることができます。変更を行える 3 つの主なプロパティは次のとおりです。
- document.conversion.sandbox.pool.size
サンドボックスの数 (利用可能なプロセスの数) を増やすには、このプロパティを使用します。追加するそれぞれのサンドボックスについて、各ノードで追加メモリを許可する必要があります。 - document.conversion.sandbox.request.time.limit.secs
サンドボックスで、プロセスを終了してサムネイルの生成に失敗するまでの、ドキュメントの変換プロセスの完了を待つ時間 (秒単位) を変更するには、このプロパティを使用します。この時間が経過すると、そのファイルのサムネイル生成は失敗として扱われます。 - document.conversion.sandbox.memory.limit.megabytes
各サンドボックスが消費できるメモリの量を制限するには、このプロパティを使用します。
これらのプロパティの完全な説明と、サンドボックスの微調整や完全な無効化に使用できるいくつかの追加プロパティについては、「認証済みのシステム プロパティ」を参照してください。
サムネイル生成に失敗したファイルの再試行
Confluence は、サムネイル生成に失敗した添付ファイルでの再試行は行いません。添付されたファイルをエディターに再度挿入しても、プロセスはトリガーされません。
リクエスト時間の上限を増やした後などにサムネイルを再度生成したい場合は、ファイルを再度アップロードして、ページに再度挿入する必要があります。
失敗したファイルの監視
サンドボックスの処理が終了すると、対象のノードに次のアプリケーション ログが記述されます。
2018-04-09 17:35:35 WARN [sandbox-terminator]
[impl.util.sandbox.DefaultSandbox] lambda$startTerminator$0 Request
has taken 33384ms exceeds limit 30000ms terminating sandbox
This will be followed by an Attempting to restart the sandbox
message, the next time someone inserts a file, triggering a conversion request.
ファイルのサムネイル生成に失敗した場合の再試行は行われないため、サンドボックスは終了後に直ちに再起動されるわけではないことにご注意ください。新しいサンドボックス インスタンスをスピン アップするための次の変換リクエストが待機されます。