インラインドキュメントの最適化と JVM メモリに対する影響

比較的小さいサイズのドキュメントを処理することが多い場合は、ドキュメント転送速度と記憶領域に関するパフォーマンスを向上させることができます。それには、LiveCycle 製品に対して以下の設定を適用します。

  • LiveCycle におけるデフォルトのドキュメントの最大インラインサイズを、ほとんどのドキュメントのサイズよりも大きい値に増やします。

  • 大きいファイルを処理する場合は、高速ディスクシステムまたは RAM ディスクにあるストレージディレクトリを指定します。

最大インラインサイズとストレージディレクトリ(LiveCycle の一時ファイルディレクトリと GDS ディレクトリ)は、Administration Console で設定します。

ドキュメントサイズと最大インラインサイズ

LiveCycle に送信して処理するドキュメントのサイズがデフォルトのドキュメント最大インラインサイズ以下の場合、ドキュメントはサーバーにインラインで保存され、Adobe Document オブジェクトとしてシリアライズされます。ドキュメントをインラインで格納することで、パフォーマンスを大幅に向上させることができます。ただし、Process Management を使用している場合は、管理のためにコンテンツもデータベースに保存されることがあります。このため、最大インラインサイズを増やすと、データベースサイズに影響する場合があります。

最大インラインサイズよりも大きいサイズのドキュメントはローカルファイルシステムに格納されます。サーバーとの間で転送される Adobe Document オブジェクトがそのファイルへの唯一のポインターとなります。

ドキュメントコンテンツがインライン化される(つまり、最大インラインサイズ未満である)と、コンテンツはドキュメントのシリアライズペイロードの一部としてデータベースに保存されます。このため、最大インラインサイズを増やすと、データベースサイズに影響する場合があります。

最大インラインサイズの変更

  1. Administration Console で、設定/コアシステム設定/設定をクリックします。

  2. 「デフォルトのドキュメント最大インラインサイズ」ボックスに値を入力し、「OK」をクリックします。

注意: デフォルトの最大インラインサイズは 65536 バイトです。

JVM 最大ヒープサイズ

最大インラインサイズを増やすと、シリアライズされたドキュメントを保存するために多くのメモリが必要になります。このため、通常は JVM 最大ヒープサイズも増やす必要があります。

大量のドキュメントを処理している負荷の高いシステムでは、JVM ヒープメモリがすぐにいっぱいになることがあります。OutOfMemoryError を防ぐために、インラインドキュメントのサイズと稼働中に通常実行されるドキュメントの数を掛けた値を求めて、JVM 最大ヒープサイズにその分を上乗せしてください。

JVM 最大ヒープサイズの増加量 = (インラインドキュメントサイズ) x (処理するドキュメントの平均数)

JVM 最大ヒープサイズの計算

この例では、現在の JVM 最大ヒープが 512 MB、最大インラインサイズは 64 KB に設定されています。サーバーの設定は、100 個のジョブが同時に実行されていて、各ジョブに 9 個の入力ファイルと 1 個の結果ファイルがある(ジョブあたり合計 10 個のファイルがあり、100 個のジョブを同時に処理する)シナリオに対応できるように指定する必要があります。ファイルのサイズはすべて 512 KB 未満です。

すべてのファイルをインラインで格納するには、最大インラインサイズを少なくとも 512 KB に設定する必要があります。

JVM 最大ヒープサイズの必要な増加量は、次の式で算出します。

(512 KB)x(100)=51200 KB(50 MB)

JVM 最大ヒープサイズは、50 MB 単位で増やす必要があり、合計 562 MB まで増やすことができます。

ヒープフラグメンテーションについて

ヒープフラグメンテーションの傾向があるシステムで、インラインドキュメントのサイズに大きな値を設定すると、OutOfMemoryError が発生する可能性が高くなります。ドキュメントをインラインで格納するには、JVM ヒープメモリに十分な連続スペースを確保する必要があります。一部のオペレーティングシステム、JVM およびガベージコレクションアルゴリズムでは、ヒープフラグメントが発生しがちです。フラグメンテーションにより、連続するヒープ領域の量が減少し、合計空き容量が十分にある場合でも OutOfMemoryError が発生することがあります。

例えば、アプリケーションサーバーでの以前の処理により JVM ヒープがフラグメントされた状態になっている場合、ガベージコレクタはヒープを十分に圧縮することができず、空き領域の大きなブロックを確保することができません。最大インラインサイズの増加に伴って JVM 最大ヒープサイズを調整した場合でも、OutOfMemoryError が発生することがあります。

ヒープフラグメンテーションに対応するには、インラインドキュメントのサイズを合計ヒープサイズの 0.1 %以下に設定する必要があります。例えば、JVM 最大ヒープサイズが 512 MB の場合は、最大インラインサイズを 512 KB(512 MB x 0.001 = 0.512 MB)に設定できます。