0

我有一个 4 cpu 的 AmazonEC2 实例。我用它来创建 PDF 报告。用户请求的最大数量为一小时内 10 到 15 个用户。但是,报告的大小非常庞大,大约 3000 到 5000 页 PDF 文件。FOP 需要 70 分钟才能呈现其中一份报告。

问题是 Java 进程在呈现报告时只使用一个 cpu。有什么办法,比如从配置中,我可以强制 FOP 使用更多的 cpu,然后只有 1?

到目前为止我尝试了什么?

我已经按照ApacheFOP 网站上的建议删除了日志记录,我也在 XSLT 中使用页面序列,我确保我所有的样式标签都被重用了。

我对 FOP 做了哪些更改?

很少有页面序列很大,所以我必须给-xms 2000Mjava,这样它就不会内存不足。顺便说一句,这台机器有 16GB 的 RAM。

4

2 回答 2

2

看看FOP 的中间格式。有了它,您可以同时格式化多个文档。稍后您可以连接中间格式文件以非常快速地生成单个打印流。最昂贵的部分是格式化。之后生成打印流非常快。

于 2013-08-27T09:36:57.367 回答
1

Apache FOP不是线程安全的,因此不能跨多个线程同时使用。您是否考虑过寻找更好地处理多线程的不同解决方案,例如JasperReports?使用 JasperReports,您可以将这数千页拆分为您运行以生成 PDF 的子报告。通过使用子报表,JasperReports 将自动生成新线程来生成它们。这将需要您在 iReports 中进行一些工作并进行一些学习,但是对于这种大小的报告,我强烈推荐它。

于 2013-08-27T06:14:15.603 回答