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]

Reply via email to