cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sylvain Wallez <sylvain.wal...@anyware-tech.com>
Subject Re: XSLTProcessor and Store was: Performance leak
Date Fri, 07 Mar 2003 14:47:43 GMT
Stephan Michels wrote:

>On Thu, 6 Mar 2003, Stephan Michels wrote:
>
>  
>
>>On Thu, 6 Mar 2003, Carsten Ziegeler wrote:
>>
>>    
>>
>>>Stephan Michels wrote:
>>>      
>>>
>>>>I do some profiling today, and wondering why the XSLT transformer
>>>>burns performance like hell in setup(). After some debugging I noticed
>>>>that the XSLT transformer create a complete new template/handler for
>>>>each call of setup(), that because the parameter 'use-store' in
>>>>cocoon.xconf is set to 'false' per default.
>>>>
>>>>After setting this parameter to 'true', the performance increased
>>>>dramatically.
>>>>
>>>>So, is there a reason, why this parameter is set to 'false'? When
>>>>not, I would change it to 'true'.
>>>>
>>>>        
>>>>
>>>There was a reason: a memory leak :) So you can change from performance
>>>to memory leak. This leak was at least in last Xalan versions, I never
>>>tested if it is in the latest, so perhaps this is fixed now.
>>>If not, you can run into serious memory problems.
>>>      
>>>
>>Doh! ;-) I'll make some longtime stability tests, to verify this. The
>>memory leak should also occur if you use the store, except if you forget
>>to remove the entries. At the moment, the concept of the XSLTC(and other)
>>doesn't make any sense, because you compile all used stylesheets for
>>every request :-/
>>    
>>
>
>I got NotSerializableException, if I stop the container. This remind
>with my problems with LexicalTransformer. I solved this problem
>using own writeObject() and readObject() methods, but the
>XSLTProcessorImpl using Object[] instances. I also don't know why this
>array isn't serializable, perhaps the Templates class isn't serializable.
>
>Yesterday I measured a performance enhancement by the factor 20x .
>Before each request took 2000-5000ms, which was untenable. After
>setting this option, each request took 50-100ms(cached).
>
>Perhaps you have an idea, where the problem lie on?
>

The problem, I think, comes from the fact that XSLTProcessor uses the 
transient store to store Templates, and that the <transient-store> in 
cocoon.xconf has the <parameter name="use-persistent-cache" value="true"/>.

So we actually have a transient store that persists its contents to disk !!!

Sylvain

-- 
Sylvain Wallez                                  Anyware Technologies
http://www.apache.org/~sylvain           http://www.anyware-tech.com
{ XML, Java, Cocoon, OpenSource }*{ Training, Consulting, Projects }



Mime
View raw message