I've seen a similar behaviour back in my FOP 0.20.5 times. But in the end I concatenated the documents on the PostScript level, not on the FO level.
However, if your stack trace is any indicator, the problem is inside Xalan-J (no FOP classes involved in the stack trace). Maybe it has to build up all these subtrees internally plus you see the effect of excessive garbage collection. FOP 0.92beta is certainly not a memory saver, yet, since there have not been any larger optimization efforts, so FOP could also be involved. I'd do the following: Concatenate your documents separately and serialize the resulting FO to a file and then fill that file into FOP. Check if there's any difference in behaviour. It may help you to identify if it's Xalan-J or FOP which is the larger problem spot. As an alternative to XSL-FO concatenation I can recommend to you look at FOP's intermediate format. Using the "IF" you can render each single document separately to an XML file which you can finally render to the target format at which point you can do the concatenation by supplying multiple IF files. This is described in [1] with an example in [2]. Could be an alternative. [1] http://xmlgraphics.apache.org/fop/latest/intermediate.html [2] http://svn.apache.org/repos/asf/xmlgraphics/fop/trunk/examples/embedding/java/embedding/intermediate/ExampleConcat.java On 21.06.2006 07:24:46 Karthik wrote: > > Hi all, > > We are currently running FOP in a batch environment on Websphere 5.1. > Are experiencing a performance lag while processing higher volume of > documents. > A brief explanation of the process : 'n' number of XML's are concatenated > into 1 PDF file. I use page-sequencing to create the output PDF. > Whats happening is that the larger the 'n', the process becomes very slower. > For e.g, for 200 xml's the PDF was created in approx 4 minutes, but, > if I increased it to 500, it almost took an hour to create the PDF. I took > threaddumps and I found that the process stalls at a certain method call - > org.apache.xml.dtm.ref.DTMDefaultBaseTraversers$DescendantTraverser.next > (DTMDefaultBaseTraversers.java(Compiled Code)). > Below is the relevant portion of the dump: > 3XMTHREADINFO "MessageListenerThreadPool : 1" (TID:0x1061D250, > sys_thread_t:0x53985C38, state:R, > native ID:0x1324) prio=5 > 4XESTACKTRACE at > org.apache.xml.dtm.ref.DTMDefaultBaseTraversers$DescendantTraverser.next > (DTMDefaultBaseTraversers.java(Compiled Code)) > 4XESTACKTRACE at > org.apache.xpath.axes.AxesWalker.getNextNode(AxesWalker.java(Compiled Code)) > 4XESTACKTRACE at > org.apache.xpath.axes.AxesWalker.nextNode(AxesWalker.java(Compiled Code)) > 4XESTACKTRACE at > org.apache.xpath.axes.WalkingIterator.nextNode > (WalkingIterator.java(Compiled Code)) > 4XESTACKTRACE at > org.apache.xpath.axes.NodeSequence.nextNode(NodeSequence.java(Compiled Code)) > 4XESTACKTRACE at > org.apache.xpath.axes.NodeSequence.runTo(NodeSequence.java(Compiled Code)) > 4XESTACKTRACE at > org.apache.xpath.axes.NodeSequence.setRoot(NodeSequence.java(Compiled Code)) > 4XESTACKTRACE at > org.apache.xpath.axes.LocPathIterator.execute(LocPathIterator.java > (Compiled Code)) > 4XESTACKTRACE at > org.apache.xpath.objects.XRTreeFragSelectWrapper.execute > (XRTreeFragSelectWrapper.java(Compiled Code)) > 4XESTACKTRACE at org.apache.xpath.XPath.execute(XPath.java(Compiled > Code)) > 4XESTACKTRACE at > org.apache.xalan.templates.ElemWithParam.getValue(ElemWithParam.java > (Compiled Code)) > 4XESTACKTRACE at > org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java > (CompiledCode)) > 4XESTACKTRACE at > org.apache.xalan.transformer.TransformerImpl.executeChildTemplates > (TransformerImpl.java(Compiled Code)) > 4XESTACKTRACE at > org.apache.xalan.templates.ElemChoose.execute(ElemChoose.java(Compiled Code)) > 4XESTACKTRACE at > org.apache.xalan.transformer.TransformerImpl.executeChildTemplates > (TransformerImpl.java(Compiled Code)) > 4XESTACKTRACE at > org.apache.xalan.templates.ElemTemplate.execute(ElemTemplate.java > (Compiled Code)) > 4XESTACKTRACE at > org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java > (CompiledCode)) > 4XESTACKTRACE at > org.apache.xalan.transformer.TransformerImpl.executeChildTemplates > (TransformerImpl.java(Compiled Code)) > 4XESTACKTRACE at > org.apache.xalan.templates.ElemChoose.execute(ElemChoose.java(Compiled Code)) > 4XESTACKTRACE at > org.apache.xalan.transformer.TransformerImpl.executeChildTemplates > (TransformerImpl.java(Compiled Code)) > 4XESTACKTRACE at > org.apache.xalan.templates.ElemTemplate.execute(ElemTemplate.java > (Compiled Code)) > 4XESTACKTRACE at > org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java > (CompiledCode)) > 4XESTACKTRACE at > org.apache.xalan.transformer.TransformerImpl.executeChildTemplates > (TransformerImpl.java(Compiled Code)) > 4XESTACKTRACE at > org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java > (CompiledCode)) > 4XESTACKTRACE at > org.apache.xalan.templates.ElemForEach.transformSelectedNodes(ElemForEach.java > (Compiled Code)) > 4XESTACKTRACE at > org.apache.xalan.templates.ElemForEach.execute(ElemForEach.java(Compiled > Code)) > 4XESTACKTRACE at > org.apache.xalan.transformer.TransformerImpl.executeChildTemplates > (TransformerImpl.java(Compiled Code)) > 4XESTACKTRACE at > org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java > (CompiledCode)) > 4XESTACKTRACE at > org.apache.xalan.transformer.TransformerImpl.executeChildTemplates > (TransformerImpl.java(Compiled Code)) > 4XESTACKTRACE at > org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java > (CompiledCode)) > 4XESTACKTRACE at > org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes > (ElemApplyTemplates.java (Compiled Code)) > 4XESTACKTRACE at > org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java > (Compiled Code)) > 4XESTACKTRACE at > org.apache.xalan.transformer.TransformerImpl.executeChildTemplates > (TransformerImpl.java(Compiled Code)) > 4XESTACKTRACE at > org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java > (CompiledCode)) > 4XESTACKTRACE at > org.apache.xalan.transformer.TransformerImpl.executeChildTemplates > (TransformerImpl.java(Compiled Code)) > 4XESTACKTRACE at > org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java > (CompiledCode)) > 4XESTACKTRACE at > org.apache.xalan.transformer.TransformerImpl.executeChildTemplates > (TransformerImpl.java(Compiled Code)) > 4XESTACKTRACE at > org.apache.xalan.templates.ElemTemplate.execute(ElemTemplate.java > (Compiled Code)) > 4XESTACKTRACE at > org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java > (CompiledCode)) > 4XESTACKTRACE at > org.apache.xalan.templates.ElemForEach.transformSelectedNodes(ElemForEach.java > (Compiled Code)) > 4XESTACKTRACE at > org.apache.xalan.templates.ElemForEach.execute(ElemForEach.java(Compiled > Code)) > 4XESTACKTRACE at > org.apache.xalan.transformer.TransformerImpl.executeChildTemplates > (TransformerImpl.java(Compiled Code)) > 4XESTACKTRACE at > org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java > (CompiledCode)) > 4XESTACKTRACE at > org.apache.xalan.transformer.TransformerImpl.executeChildTemplates > (TransformerImpl.java(Compiled Code)) > 4XESTACKTRACE at > org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode > (TransformerImpl.java(Compiled Code)) > 4XESTACKTRACE at > org.apache.xalan.transformer.TransformerImpl.transformNode > (TransformerImpl.java(Compiled Code)) > 4XESTACKTRACE at > org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java > (CompiledCode)) > 4XESTACKTRACE at > org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java > (CompiledCode)) > 4XESTACKTRACE at > org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java > (CompiledCode)) > I'm kind of cluless as to what could be the reason for the problem. > > Appreciate any help and inputs/pointers. > > I am at fop-0.92beta. Jeremias Maerki --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
