0

4 CPU の AmazonEC2 インスタンスがあります。PDFレポートを作成するために使用します。ユーザー リクエストの最大数は、1 時間あたり 10 ~ 15 ユーザーです。ただし、レポートのサイズは膨大で、約 3000 ~ 5000 ページの PDF ファイルです。FOP がこれらのレポートの 1 つをレンダリングするのに 70 分かかります。

問題は、レポートのレンダリング中に Java プロセスが 1 つの CPU しか使用しないことです。構成から、FOP が 1 つだけよりも多くの CPU を使用するように強制する方法はありますか?

これまでに何を試しましたか?

ApacheFOP Web サイトで提案されているようにログを削除しました。また、XSLT でページ シーケンスを使用しています。すべてのスタイル タグが再利用されていることを確認しています。

FOP に加えた変更はありますか?

-xms 2000Mメモリ不足にならないようにJavaに渡す必要があるほど巨大なページシーケンスはほとんどありません。ところで、マシンには16GBのRAMがあります。

4

2 に答える 2

2

FOP の Intermediate Formatをご覧ください。これにより、複数のドキュメントを同時にフォーマットできます。後で中間形式のファイルを連結して、単一の印刷ストリームを非常に迅速に生成できます。最もコストのかかる部分はフォーマットです。その後の印刷ストリームの生成は非常に高速です。

于 2013-08-27T09:36:57.367 に答える
1

Apache FOPはスレッドセーフではないため、複数のスレッドで同時に使用することはできません。JasperReportsのように、マルチスレッドをより適切に処理する別のソリューションを探すことを考えましたか? JasperReports を使用すると、これらの数千ページを、実行して PDF を生成するサブレポートに分割できます。サブレポートを使用することにより、JasperReports は自動的に新しいスレッドを生成して生成します。iReports での作業とユーザーの学習が必要ですが、このサイズのレポートの場合は強くお勧めします。

于 2013-08-27T06:14:15.603 に答える