apache fop从fo文件转换为pdf在服务器上比本地和commnad行

时间:2016-10-26 15:47:18

标签: garbage-collection tomcat7 liferay-6 apache-fop

我面临一个奇怪的问题,apache fop将fo文件转换为pdf在服务器上运行速度非常慢(tomcat 7,liferay 6.2),但在本地运行速度很快(tomcat 7,liferay 6.2)。

服务器上的

需要2分钟,但本地只需几秒钟 如果在服务器上使用命令行也是正常的,也需要几秒钟。

pdf大约是80页,因为xsl文件太大,我不能在这里发帖。

我们在本地和服务器上监控GC,发现在本地有1个或2个次要GC发生,而服务器次要GC每1或2秒发生一次。并且每个gc释放像500m内存,所以看起来在服务器上它产生的垃圾比在本地产生的垃圾更多。

同样在服务器上运行时,cpu使用率几乎保持在5%。

我的代码示例,尝试使用catch块:

fopFactory = FopFactory.newInstance(xconf);

FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
outStream = new ByteArrayOutputStream();

Fop fop;
fop =fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, outStream);
Result res = new SAXResult(fop.getDefaultHandler());

new net.sf.saxon.TransformerFactoryImpl().newTransformer().transform(foFile, res)

任何想法都将受到高度赞赏!

更新

我通过添加类似log4j.logger.org.apache.fop = info的东西修复了这个问题。 我们之前已经将log4j.logger.org.apache设置为DEBUG,因此我们认为记录过多会引发问题。

0 个答案:

没有答案