You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cocoon.apache.org by David Bishop <d....@waypointsystems.co.uk> on 2006/01/26 19:18:04 UTC

Scaling Cocoon to handle a heavy load

Hello,

I am hosting a website for a european project which hosts a number of  
complicated database driven questionnaires on genetic testing the  
site receives high peaks of usage and around 5000 visits, 200'000  
hits per month. The entire site is written in cocoon and I am having  
problems in that during peak usage cocoon starts to return blank  
pages and errors appear in the log from normally error free, the  
server begins after that point to degrade in performance and Tomcat  
ends up returning java.lang.OutOfMemoryError errors.

The live server setup is

Linux Fedora Core 2
Apache Cocoon 2.1.6
Apache Tomcat 5.0.28
Java 1.4.2_07
PostgreSQL 7.4.7

The hardware of the live server is a Quad Xeon 3.0 with 2Gb RAM

Replicating the server locally and hitting the site with Siege I am  
able to bring the server down in a similar fashion using 15  
concurrent users after 10 minutes. Hitting one error free page which  
takes around 1 second to render on a server with no load.

The page is an aggregation of sitemap matches which run no more than  
5 deep in sitemaps and has a number of XSP's which access a  
PostgreSQL database using ESQL for various bits of the page, things  
start to go nasty when the page response time drops to around 30  
seconds.

The Cocoon build however is only core blocks and there is nothing  
fancy in the code just ESQL, XSP and XSL using the default transformer.

I have tried playing with pool sizes
I have tried upgrading to Cocoon 2.1.8 which had little effect on  
performance, but much nicer error pages :-)
I have tried upgrading to Apache Tomcat 5.5.12 with Java 1.5.0_06  
which had a good effect on performance but still the site falls over  
at about 30 concurrent users.

Although I had to go back to Cocoon 2.1.6 as I got xspAttr errors  
with Cocoon 2.1.8 and Tomcat 5.5.12, any clues on this would also be  
appreciated!

What I don't understand as I am running out of ideas and depth of  
knowledge, is how to get better performance, I have set Java with the  
parameter to -Xmx2048M but tomcat doesn't take any than around 200Mbs.

What I would love is some advice as to what to try next?

- should I look at running multiple instances of tomcat?

Any advice would be greatly appreciated,

David.

David H Bishop
Waypoint Systems Ltd

Cocoon Error
-------------------
FATAL_E (2006-01-20) 19:19.38:590   [core.xslt-processor] (/cocoon/ 
egtorg/web/db/keyword/163/index.xhtml) http-8080-Processor8/ 
TraxErrorHandler: Error in TraxTransformer:  
javax.xml.transform.TransformerException:  
java.lang.ArrayIndexOutOfBoundsException: -1
javax.xml.transform.TransformerException:  
java.lang.ArrayIndexOutOfBoundsException: -1
	at org.apache.xalan.transformer.TransformerImpl.transformNode 
(TransformerImpl.java:1276)
	at org.apache.xalan.transformer.TransformerImpl.run 
(TransformerImpl.java:3372)
	at org.apache.xalan.transformer.TransformerHandlerImpl.endDocument 
(TransformerHandlerImpl.java:433)
	at org.apache.cocoon.xml.AbstractXMLPipe.endDocument 
(AbstractXMLPipe.java:55)
	at org.apache.cocoon.transformation.TraxTransformer.endDocument 
(TraxTransformer.java:562)
	at org.apache.cocoon.sitemap.ContentAggregator.generate 
(ContentAggregator.java:134)
	at  
org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipe 
line.processXMLPipeline(AbstractCachingProcessingPipeline.java:258)
	at  
org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process 
(AbstractProcessingPipeline.java:468)
	at  
org.apache.cocoon.components.treeprocessor.sitemap.SerializeNode.invoke( 
SerializeNode.java:120)
	at  
org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode. 
invokeNodes(AbstractParentProcessingNode.java:68)
	at org.apache.cocoon.components.treeprocessor.ContainerNode.invoke 
(ContainerNode.java:31)
	at  
org.apache.cocoon.components.treeprocessor.CategoryNode.invokeByName 
(CategoryNode.java:62)
	at org.apache.cocoon.components.treeprocessor.sitemap.CallNode.invoke 
(CallNode.java:109)
	at  
org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode. 
invokeNodes(AbstractParentProcessingNode.java:46)
	at  
org.apache.cocoon.components.treeprocessor.sitemap.PreparableMatchNode.i 
nvoke(PreparableMatchNode.java:130)
	at  
org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode. 
invokeNodes(AbstractParentProcessingNode.java:68)
	at  
org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke 
(PipelineNode.java:138)
	at  
org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode. 
invokeNodes(AbstractParentProcessingNode.java:68)
	at  
org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke( 
PipelinesNode.java:89)
	at  
org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process 
(ConcreteTreeProcessor.java:240)
	at  
org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process 
(ConcreteTreeProcessor.java:180)
	at org.apache.cocoon.components.treeprocessor.TreeProcessor.process 
(TreeProcessor.java:243)
	at  
org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke 
(MountNode.java:117)
	at  
org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode. 
invokeNodes(AbstractParentProcessingNode.java:46)
	at  
org.apache.cocoon.components.treeprocessor.sitemap.PreparableMatchNode.i 
nvoke(PreparableMatchNode.java:130)
	at  
org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode. 
invokeNodes(AbstractParentProcessingNode.java:68)
	at  
org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke 
(PipelineNode.java:138)
	at  
org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode. 
invokeNodes(AbstractParentProcessingNode.java:68)
	at  
org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke( 
PipelinesNode.java:89)
	at  
org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process 
(ConcreteTreeProcessor.java:240)
	at  
org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process 
(ConcreteTreeProcessor.java:180)
	at org.apache.cocoon.components.treeprocessor.TreeProcessor.process 
(TreeProcessor.java:243)
	at  
org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke 
(MountNode.java:117)
	at  
org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode. 
invokeNodes(AbstractParentProcessingNode.java:46)
	at  
org.apache.cocoon.components.treeprocessor.sitemap.PreparableMatchNode.i 
nvoke(PreparableMatchNode.java:130)
	at  
org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode. 
invokeNodes(AbstractParentProcessingNode.java:68)
	at  
org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke 
(PipelineNode.java:138)
	at  
org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode. 
invokeNodes(AbstractParentProcessingNode.java:68)
	at  
org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke( 
PipelinesNode.java:89)
	at  
org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process 
(ConcreteTreeProcessor.java:240)
	at  
org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process 
(ConcreteTreeProcessor.java:180)
	at org.apache.cocoon.components.treeprocessor.TreeProcessor.process 
(TreeProcessor.java:243)
	at  
org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke 
(MountNode.java:117)
	at  
org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode. 
invokeNodes(AbstractParentProcessingNode.java:46)
	at  
org.apache.cocoon.components.treeprocessor.sitemap.PreparableMatchNode.i 
nvoke(PreparableMatchNode.java:130)
	at  
org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode. 
invokeNodes(AbstractParentProcessingNode.java:68)
	at  
org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke 
(PipelineNode.java:138)
	at  
org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode. 
invokeNodes(AbstractParentProcessingNode.java:68)
	at  
org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke( 
PipelinesNode.java:89)
	at  
org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process 
(ConcreteTreeProcessor.java:240)
	at  
org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process 
(ConcreteTreeProcessor.java:180)
	at org.apache.cocoon.components.treeprocessor.TreeProcessor.process 
(TreeProcessor.java:243)
	at org.apache.cocoon.Cocoon.process(Cocoon.java:606)
	at org.apache.cocoon.servlet.CocoonServlet.service 
(CocoonServlet.java:1119)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter 
(ApplicationFilterChain.java:237)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter 
(ApplicationFilterChain.java:157)
	at org.apache.catalina.core.StandardWrapperValve.invoke 
(StandardWrapperValve.java:214)
	at org.apache.catalina.core.StandardValveContext.invokeNext 
(StandardValveContext.java:104)
	at org.apache.catalina.core.StandardPipeline.invoke 
(StandardPipeline.java:520)
	at org.apache.catalina.core.StandardContextValve.invokeInternal 
(StandardContextValve.java:198)
	at org.apache.catalina.core.StandardContextValve.invoke 
(StandardContextValve.java:152)
	at org.apache.catalina.core.StandardValveContext.invokeNext 
(StandardValveContext.java:104)
	at org.apache.catalina.core.StandardPipeline.invoke 
(StandardPipeline.java:520)
	at org.apache.catalina.core.StandardHostValve.invoke 
(StandardHostValve.java:137)
	at org.apache.catalina.core.StandardValveContext.invokeNext 
(StandardValveContext.java:104)
	at org.apache.catalina.valves.ErrorReportValve.invoke 
(ErrorReportValve.java:118)
	at org.apache.catalina.core.StandardValveContext.invokeNext 
(StandardValveContext.java:102)
	at org.apache.catalina.core.StandardPipeline.invoke 
(StandardPipeline.java:520)
	at org.apache.catalina.core.StandardEngineValve.invoke 
(StandardEngineValve.java:109)
	at org.apache.catalina.core.StandardValveContext.invokeNext 
(StandardValveContext.java:104)
	at org.apache.catalina.core.StandardPipeline.invoke 
(StandardPipeline.java:520)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java: 
929)
	at org.apache.coyote.tomcat5.CoyoteAdapter.service 
(CoyoteAdapter.java:160)
	at org.apache.coyote.http11.Http11Processor.process 
(Http11Processor.java:799)
	at org.apache.coyote.http11.Http11Protocol 
$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt 
(PoolTcpEndpoint.java:577)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run 
(ThreadPool.java:683)
	at java.lang.Thread.run(Thread.java:534)
Caused by: java.lang.ArrayIndexOutOfBoundsException: -1
	at org.apache.xml.utils.ObjectStack.pop(ObjectStack.java:137)
	at  
org.apache.xalan.transformer.TransformerImpl.popElemTemplateElement 
(TransformerImpl.java:2521)
	at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode 
(TransformerImpl.java:2178)
	at org.apache.xalan.transformer.TransformerImpl.transformNode 
(TransformerImpl.java:1213)
	... 78 more
---------










Catalina.out Error
----------------------------

java.lang.OutOfMemoryError
java.lang.NullPointerException
         at org.apache.cocoon.environment.AbstractEnvironment.release 
(AbstractEnvironment.java:544)
         at  
org.apache.cocoon.environment.wrapper.MutableEnvironmentFacade.release 
(MutableEnvironmentFacade.java:323)
         at org.apache.cocoon.generation.ServerPagesGenerator.recycle 
(ServerPagesGenerator.java:262)
         at org.apache.avalon.excalibur.pool.ResourceLimitingPool.put 
(ResourceLimitingPool.java:438)
         at  
org.apache.avalon.excalibur.component.PoolableComponentHandler.doPut 
(PoolableComponentHandler.java:212)
         at org.apache.avalon.excalibur.component.ComponentHandler.put 
(ComponentHandler.java:425)
         at  
org.apache.avalon.excalibur.component.ExcaliburComponentSelector.release 
(ExcaliburComponentSelector.java:305)
         at  
org.apache.cocoon.components.ExtendedComponentSelector.release 
(ExtendedComponentSelector.java:286)
         at  
org.apache.cocoon.components.ExtendedComponentSelector.release 
(ExtendedComponentSelector.java:283)
         at  
org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.recycle 
(AbstractProcessingPipeline.java:658)
         at  
org.apache.cocoon.components.pipeline.impl.BaseCachingProcessingPipeline 
.recycle(BaseCachingProcessingPipeline.java:77)
         at  
org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipe 
line.recycle(AbstractCachingProcessingPipeline.java:963)
         at org.apache.avalon.excalibur.pool.ResourceLimitingPool.put 
(ResourceLimitingPool.java:438)
         at  
org.apache.avalon.excalibur.component.PoolableComponentHandler.doPut 
(PoolableComponentHandler.java:212)
         at org.apache.avalon.excalibur.component.ComponentHandler.put 
(ComponentHandler.java:425)
         at  
org.apache.avalon.excalibur.component.ExcaliburComponentSelector.release 
(ExcaliburComponentSelector.java:305)
         at  
org.apache.cocoon.components.ExtendedComponentSelector.release 
(ExtendedComponentSelector.java:286)
         at  
org.apache.cocoon.components.EnvironmentDescription.release 
(CocoonComponentManager.java:613)
         at  
org.apache.cocoon.components.CocoonComponentManager.endProcessing 
(CocoonComponentManager.java:218)
         at org.apache.cocoon.Cocoon.process(Cocoon.java:646)
         at org.apache.cocoon.servlet.CocoonServlet.service 
(CocoonServlet.java:1119)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
         at  
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter 
(ApplicationFilterChain.java:237)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter 
(ApplicationFilterChain.java:157)
         at org.apache.catalina.core.StandardWrapperValve.invoke 
(StandardWrapperValve.java:214)
         at org.apache.catalina.core.StandardValveContext.invokeNext 
(StandardValveContext.java:104)
         at org.apache.catalina.core.StandardPipeline.invoke 
(StandardPipeline.java:520)
         at  
org.apache.catalina.core.StandardContextValve.invokeInternal 
(StandardContextValve.java:198)
         at org.apache.catalina.core.StandardContextValve.invoke 
(StandardContextValve.java:152)
         at org.apache.catalina.core.StandardValveContext.invokeNext 
(StandardValveContext.java:104)
         at org.apache.catalina.core.StandardPipeline.invoke 
(StandardPipeline.java:520)
         at org.apache.catalina.core.StandardHostValve.invoke 
(StandardHostValve.java:137)
         at org.apache.catalina.core.StandardValveContext.invokeNext 
(StandardValveContext.java:104)
         at org.apache.catalina.valves.ErrorReportValve.invoke 
(ErrorReportValve.java:118)
         at org.apache.catalina.core.StandardValveContext.invokeNext 
(StandardValveContext.java:102)
         at org.apache.catalina.core.StandardPipeline.invoke 
(StandardPipeline.java:520)
         at org.apache.catalina.core.StandardEngineValve.invoke 
(StandardEngineValve.java:109)
         at org.apache.catalina.core.StandardValveContext.invokeNext 
(StandardValveContext.java:104)
         at org.apache.catalina.core.StandardPipeline.invoke 
(StandardPipeline.java:520)
         at org.apache.catalina.core.ContainerBase.invoke 
(ContainerBase.java:929)
         at org.apache.coyote.tomcat5.CoyoteAdapter.service 
(CoyoteAdapter.java:160)
         at org.apache.coyote.http11.Http11Processor.process 
(Http11Processor.java:799)
         at org.apache.coyote.http11.Http11Protocol 
$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
         at org.apache.tomcat.util.net.TcpWorkerThread.runIt 
(PoolTcpEndpoint.java:577)
         at org.apache.tomcat.util.threads.ThreadPool 
$ControlRunnable.run(ThreadPool.java:683)
         at java.lang.Thread.run(Thread.java:534)
java.lang.NullPointerException
         at org.apache.cocoon.environment.AbstractEnvironment.release 
(AbstractEnvironment.java:544)
         at  
org.apache.cocoon.environment.wrapper.MutableEnvironmentFacade.release 
(MutableEnvironmentFacade.java:323)
         at org.apache.cocoon.generation.ServerPagesGenerator.recycle 
(ServerPagesGenerator.java:262)
         at org.apache.avalon.excalibur.pool.ResourceLimitingPool.put 
(ResourceLimitingPool.java:438)
         at  
org.apache.avalon.excalibur.component.PoolableComponentHandler.doPut 
(PoolableComponentHandler.java:212)
         at org.apache.avalon.excalibur.component.ComponentHandler.put 
(ComponentHandler.java:425)
         at  
org.apache.avalon.excalibur.component.ExcaliburComponentSelector.release 
(ExcaliburComponentSelector.java:305)
         at  
org.apache.cocoon.components.ExtendedComponentSelector.release 
(ExtendedComponentSelector.java:286)
         at  
org.apache.cocoon.components.ExtendedComponentSelector.release 
(ExtendedComponentSelector.java:283)
         at  
org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.recycle 
(AbstractProcessingPipeline.java:658)
         at  
org.apache.cocoon.components.pipeline.impl.BaseCachingProcessingPipeline 
.recycle(BaseCachingProcessingPipeline.java:77)
         at  
org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipe 
line.recycle(AbstractCachingProcessingPipeline.java:963)
         at org.apache.avalon.excalibur.pool.ResourceLimitingPool.put 
(ResourceLimitingPool.java:438)
         at  
org.apache.avalon.excalibur.component.PoolableComponentHandler.doPut 
(PoolableComponentHandler.java:212)
         at org.apache.avalon.excalibur.component.ComponentHandler.put 
(ComponentHandler.java:425)
         at  
org.apache.avalon.excalibur.component.ExcaliburComponentSelector.release 
(ExcaliburComponentSelector.java:305)
         at  
org.apache.cocoon.components.ExtendedComponentSelector.release 
(ExtendedComponentSelector.java:286)
         at  
org.apache.cocoon.components.EnvironmentDescription.release 
(CocoonComponentManager.java:613)
         at  
org.apache.cocoon.components.CocoonComponentManager.endProcessing 
(CocoonComponentManager.java:218)
         at org.apache.cocoon.Cocoon.process(Cocoon.java:646)
         at org.apache.cocoon.servlet.CocoonServlet.service 
(CocoonServlet.java:1119)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
         at  
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter 
(ApplicationFilterChain.java:237)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter 
(ApplicationFilterChain.java:157)
         at org.apache.catalina.core.StandardWrapperValve.invoke 
(StandardWrapperValve.java:214)
         at org.apache.catalina.core.StandardValveContext.invokeNext 
(StandardValveContext.java:104)
         at org.apache.catalina.core.StandardPipeline.invoke 
(StandardPipeline.java:520)
         at  
org.apache.catalina.core.StandardContextValve.invokeInternal 
(StandardContextValve.java:198)
         at org.apache.catalina.core.StandardContextValve.invoke 
(StandardContextValve.java:152)
         at org.apache.catalina.core.StandardValveContext.invokeNext 
(StandardValveContext.java:104)
         at org.apache.catalina.core.StandardPipeline.invoke 
(StandardPipeline.java:520)
         at org.apache.catalina.core.StandardHostValve.invoke 
(StandardHostValve.java:137)
         at org.apache.catalina.core.StandardValveContext.invokeNext 
(StandardValveContext.java:104)
         at org.apache.catalina.valves.ErrorReportValve.invoke 
(ErrorReportValve.java:118)
         at org.apache.catalina.core.StandardValveContext.invokeNext 
(StandardValveContext.java:102)
         at org.apache.catalina.core.StandardPipeline.invoke 
(StandardPipeline.java:520)
         at org.apache.catalina.core.StandardEngineValve.invoke 
(StandardEngineValve.java:109)
         at org.apache.catalina.core.StandardValveContext.invokeNext 
(StandardValveContext.java:104)
         at org.apache.catalina.core.StandardPipeline.invoke 
(StandardPipeline.java:520)
         at org.apache.catalina.core.ContainerBase.invoke 
(ContainerBase.java:929)
         at org.apache.coyote.tomcat5.CoyoteAdapter.service 
(CoyoteAdapter.java:160)
         at org.apache.coyote.http11.Http11Processor.process 
(Http11Processor.java:799)
         at org.apache.coyote.http11.Http11Protocol 
$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
         at org.apache.tomcat.util.net.TcpWorkerThread.runIt 
(PoolTcpEndpoint.java:577)
         at org.apache.tomcat.util.threads.ThreadPool 
$ControlRunnable.run(ThreadPool.java:683)
         at java.lang.Thread.run(Thread.java:534)


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Scaling Cocoon to handle a heavy load

Posted by Berin Loritsch <bl...@d-haven.org>.
David Bishop wrote:
> Hi,
>
> Two weeks ago I asked for help regarding Cocoon performance.
>
> I was pointed in the direction of the JVM as I was running 1.4.2, I 
> upgraded this to 1.5.0_05 which basically has better garbage 
> collection management and it proved to be a great improvement of 
> stability and performance. Even under duress my test server gracefully 
> slowed down, not crashed and burned like before!
>
> This change has been made live and all is well site is performing 
> beautifully and much quicker.
>
> Many Thanks, for the advice, greatly appreciated!!
>
> David.

Thanks for the feedback--I was wondering how things turned out for you.  
I'm glad everything is working well for you.

This might need to be in a FAQ somewhere, I'll check with the dev community


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Scaling Cocoon to handle a heavy load

Posted by David Bishop <d....@waypointsystems.co.uk>.
Hi,

Two weeks ago I asked for help regarding Cocoon performance.

I was pointed in the direction of the JVM as I was running 1.4.2, I  
upgraded this to 1.5.0_05 which basically has better garbage  
collection management and it proved to be a great improvement of  
stability and performance. Even under duress my test server  
gracefully slowed down, not crashed and burned like before!

This change has been made live and all is well site is performing  
beautifully and much quicker.

Many Thanks, for the advice, greatly appreciated!!

David.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Scaling Cocoon to handle a heavy load

Posted by Ralph Goers <Ra...@dslextreme.com>.
We are running Cocoon getting 1-2 hits per second 24 hours a day.  Our 
system was completely misconfigured and it was still able to handle the 
load.  However, we don't use XSPs.

1. Check the pool sizes of all the poolable components used in your 
sitemaps.  Add them up to get a per-request approximate amount, multiply 
by the number of concurrent users, add some slop and then set that to 
the max pool size.  Don't set the min pool size too high or startup will 
be painful.
2. Make sure your cache sizes are big enough. Use the status page to 
check it. If you have a disk cache then they are probably too small.
3. Make sure you are caching as much as you can.
4. Use a profiler like Optimizeit, JProbe, Jprofiler or YourKit to look 
at your CPU and memory usage. If you are getting OutOfMemoryErrors then 
your XSPs may have problems.
5. If you don't have a profiler then just do a kill -3 at random times 
to get stack traces.  This isn't very accurate but it will point out 
obvious bottlenecks that are clogging your system.
6. Your database might be the bottleneck. Make sure that all the threads 
aren't blocking trying to access it.

HTH
Ralph

David Bishop wrote:

> Hello,
>
> I am hosting a website for a european project which hosts a number of  
> complicated database driven questionnaires on genetic testing the  
> site receives high peaks of usage and around 5000 visits, 200'000  
> hits per month. The entire site is written in cocoon and I am having  
> problems in that during peak usage cocoon starts to return blank  
> pages and errors appear in the log from normally error free, the  
> server begins after that point to degrade in performance and Tomcat  
> ends up returning java.lang.OutOfMemoryError errors.
>
> The live server setup is
>
> Linux Fedora Core 2
> Apache Cocoon 2.1.6
> Apache Tomcat 5.0.28
> Java 1.4.2_07
> PostgreSQL 7.4.7
>
> The hardware of the live server is a Quad Xeon 3.0 with 2Gb RAM
>
> Replicating the server locally and hitting the site with Siege I am  
> able to bring the server down in a similar fashion using 15  
> concurrent users after 10 minutes. Hitting one error free page which  
> takes around 1 second to render on a server with no load.
>
> The page is an aggregation of sitemap matches which run no more than  
> 5 deep in sitemaps and has a number of XSP's which access a  
> PostgreSQL database using ESQL for various bits of the page, things  
> start to go nasty when the page response time drops to around 30  
> seconds.
>
> The Cocoon build however is only core blocks and there is nothing  
> fancy in the code just ESQL, XSP and XSL using the default transformer.
>
> I have tried playing with pool sizes
> I have tried upgrading to Cocoon 2.1.8 which had little effect on  
> performance, but much nicer error pages :-)
> I have tried upgrading to Apache Tomcat 5.5.12 with Java 1.5.0_06  
> which had a good effect on performance but still the site falls over  
> at about 30 concurrent users.
>
> Although I had to go back to Cocoon 2.1.6 as I got xspAttr errors  
> with Cocoon 2.1.8 and Tomcat 5.5.12, any clues on this would also be  
> appreciated!
>
> What I don't understand as I am running out of ideas and depth of  
> knowledge, is how to get better performance, I have set Java with the  
> parameter to -Xmx2048M but tomcat doesn't take any than around 200Mbs.
>
> What I would love is some advice as to what to try next?
>
> - should I look at running multiple instances of tomcat?
>
> Any advice would be greatly appreciated,
>
> David.
>
> David H Bishop
> Waypoint Systems Ltd
>
> Cocoon Error
> -------------------
> FATAL_E (2006-01-20) 19:19.38:590   [core.xslt-processor] (/cocoon/ 
> egtorg/web/db/keyword/163/index.xhtml) http-8080-Processor8/ 
> TraxErrorHandler: Error in TraxTransformer:  
> javax.xml.transform.TransformerException:  
> java.lang.ArrayIndexOutOfBoundsException: -1
> javax.xml.transform.TransformerException:  
> java.lang.ArrayIndexOutOfBoundsException: -1
>     at org.apache.xalan.transformer.TransformerImpl.transformNode 
> (TransformerImpl.java:1276)
>     at org.apache.xalan.transformer.TransformerImpl.run 
> (TransformerImpl.java:3372)
>     at org.apache.xalan.transformer.TransformerHandlerImpl.endDocument 
> (TransformerHandlerImpl.java:433)
>     at org.apache.cocoon.xml.AbstractXMLPipe.endDocument 
> (AbstractXMLPipe.java:55)
>     at org.apache.cocoon.transformation.TraxTransformer.endDocument 
> (TraxTransformer.java:562)
>     at org.apache.cocoon.sitemap.ContentAggregator.generate 
> (ContentAggregator.java:134)
>     at  
> org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipe 
> line.processXMLPipeline(AbstractCachingProcessingPipeline.java:258)
>     at  
> org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process 
> (AbstractProcessingPipeline.java:468)
>     at  
> org.apache.cocoon.components.treeprocessor.sitemap.SerializeNode.invoke( 
> SerializeNode.java:120)
>     at  
> org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode. 
> invokeNodes(AbstractParentProcessingNode.java:68)
>     at org.apache.cocoon.components.treeprocessor.ContainerNode.invoke 
> (ContainerNode.java:31)
>     at  
> org.apache.cocoon.components.treeprocessor.CategoryNode.invokeByName 
> (CategoryNode.java:62)
>     at 
> org.apache.cocoon.components.treeprocessor.sitemap.CallNode.invoke 
> (CallNode.java:109)
>     at  
> org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode. 
> invokeNodes(AbstractParentProcessingNode.java:46)
>     at  
> org.apache.cocoon.components.treeprocessor.sitemap.PreparableMatchNode.i 
> nvoke(PreparableMatchNode.java:130)
>     at  
> org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode. 
> invokeNodes(AbstractParentProcessingNode.java:68)
>     at  
> org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke 
> (PipelineNode.java:138)
>     at  
> org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode. 
> invokeNodes(AbstractParentProcessingNode.java:68)
>     at  
> org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke( 
> PipelinesNode.java:89)
>     at  
> org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process 
> (ConcreteTreeProcessor.java:240)
>     at  
> org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process 
> (ConcreteTreeProcessor.java:180)
>     at 
> org.apache.cocoon.components.treeprocessor.TreeProcessor.process 
> (TreeProcessor.java:243)
>     at  
> org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke 
> (MountNode.java:117)
>     at  
> org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode. 
> invokeNodes(AbstractParentProcessingNode.java:46)
>     at  
> org.apache.cocoon.components.treeprocessor.sitemap.PreparableMatchNode.i 
> nvoke(PreparableMatchNode.java:130)
>     at  
> org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode. 
> invokeNodes(AbstractParentProcessingNode.java:68)
>     at  
> org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke 
> (PipelineNode.java:138)
>     at  
> org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode. 
> invokeNodes(AbstractParentProcessingNode.java:68)
>     at  
> org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke( 
> PipelinesNode.java:89)
>     at  
> org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process 
> (ConcreteTreeProcessor.java:240)
>     at  
> org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process 
> (ConcreteTreeProcessor.java:180)
>     at 
> org.apache.cocoon.components.treeprocessor.TreeProcessor.process 
> (TreeProcessor.java:243)
>     at  
> org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke 
> (MountNode.java:117)
>     at  
> org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode. 
> invokeNodes(AbstractParentProcessingNode.java:46)
>     at  
> org.apache.cocoon.components.treeprocessor.sitemap.PreparableMatchNode.i 
> nvoke(PreparableMatchNode.java:130)
>     at  
> org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode. 
> invokeNodes(AbstractParentProcessingNode.java:68)
>     at  
> org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke 
> (PipelineNode.java:138)
>     at  
> org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode. 
> invokeNodes(AbstractParentProcessingNode.java:68)
>     at  
> org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke( 
> PipelinesNode.java:89)
>     at  
> org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process 
> (ConcreteTreeProcessor.java:240)
>     at  
> org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process 
> (ConcreteTreeProcessor.java:180)
>     at 
> org.apache.cocoon.components.treeprocessor.TreeProcessor.process 
> (TreeProcessor.java:243)
>     at  
> org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke 
> (MountNode.java:117)
>     at  
> org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode. 
> invokeNodes(AbstractParentProcessingNode.java:46)
>     at  
> org.apache.cocoon.components.treeprocessor.sitemap.PreparableMatchNode.i 
> nvoke(PreparableMatchNode.java:130)
>     at  
> org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode. 
> invokeNodes(AbstractParentProcessingNode.java:68)
>     at  
> org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke 
> (PipelineNode.java:138)
>     at  
> org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode. 
> invokeNodes(AbstractParentProcessingNode.java:68)
>     at  
> org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke( 
> PipelinesNode.java:89)
>     at  
> org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process 
> (ConcreteTreeProcessor.java:240)
>     at  
> org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process 
> (ConcreteTreeProcessor.java:180)
>     at 
> org.apache.cocoon.components.treeprocessor.TreeProcessor.process 
> (TreeProcessor.java:243)
>     at org.apache.cocoon.Cocoon.process(Cocoon.java:606)
>     at org.apache.cocoon.servlet.CocoonServlet.service 
> (CocoonServlet.java:1119)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>     at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter 
> (ApplicationFilterChain.java:237)
>     at org.apache.catalina.core.ApplicationFilterChain.doFilter 
> (ApplicationFilterChain.java:157)
>     at org.apache.catalina.core.StandardWrapperValve.invoke 
> (StandardWrapperValve.java:214)
>     at org.apache.catalina.core.StandardValveContext.invokeNext 
> (StandardValveContext.java:104)
>     at org.apache.catalina.core.StandardPipeline.invoke 
> (StandardPipeline.java:520)
>     at org.apache.catalina.core.StandardContextValve.invokeInternal 
> (StandardContextValve.java:198)
>     at org.apache.catalina.core.StandardContextValve.invoke 
> (StandardContextValve.java:152)
>     at org.apache.catalina.core.StandardValveContext.invokeNext 
> (StandardValveContext.java:104)
>     at org.apache.catalina.core.StandardPipeline.invoke 
> (StandardPipeline.java:520)
>     at org.apache.catalina.core.StandardHostValve.invoke 
> (StandardHostValve.java:137)
>     at org.apache.catalina.core.StandardValveContext.invokeNext 
> (StandardValveContext.java:104)
>     at org.apache.catalina.valves.ErrorReportValve.invoke 
> (ErrorReportValve.java:118)
>     at org.apache.catalina.core.StandardValveContext.invokeNext 
> (StandardValveContext.java:102)
>     at org.apache.catalina.core.StandardPipeline.invoke 
> (StandardPipeline.java:520)
>     at org.apache.catalina.core.StandardEngineValve.invoke 
> (StandardEngineValve.java:109)
>     at org.apache.catalina.core.StandardValveContext.invokeNext 
> (StandardValveContext.java:104)
>     at org.apache.catalina.core.StandardPipeline.invoke 
> (StandardPipeline.java:520)
>     at 
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java: 929)
>     at org.apache.coyote.tomcat5.CoyoteAdapter.service 
> (CoyoteAdapter.java:160)
>     at org.apache.coyote.http11.Http11Processor.process 
> (Http11Processor.java:799)
>     at org.apache.coyote.http11.Http11Protocol 
> $Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
>     at org.apache.tomcat.util.net.TcpWorkerThread.runIt 
> (PoolTcpEndpoint.java:577)
>     at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run 
> (ThreadPool.java:683)
>     at java.lang.Thread.run(Thread.java:534)
> Caused by: java.lang.ArrayIndexOutOfBoundsException: -1
>     at org.apache.xml.utils.ObjectStack.pop(ObjectStack.java:137)
>     at  
> org.apache.xalan.transformer.TransformerImpl.popElemTemplateElement 
> (TransformerImpl.java:2521)
>     at 
> org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode 
> (TransformerImpl.java:2178)
>     at org.apache.xalan.transformer.TransformerImpl.transformNode 
> (TransformerImpl.java:1213)
>     ... 78 more
> ---------
>
>
>
>
>
>
>
>
>
>
> Catalina.out Error
> ----------------------------
>
> java.lang.OutOfMemoryError
> java.lang.NullPointerException
>         at org.apache.cocoon.environment.AbstractEnvironment.release 
> (AbstractEnvironment.java:544)
>         at  
> org.apache.cocoon.environment.wrapper.MutableEnvironmentFacade.release 
> (MutableEnvironmentFacade.java:323)
>         at org.apache.cocoon.generation.ServerPagesGenerator.recycle 
> (ServerPagesGenerator.java:262)
>         at org.apache.avalon.excalibur.pool.ResourceLimitingPool.put 
> (ResourceLimitingPool.java:438)
>         at  
> org.apache.avalon.excalibur.component.PoolableComponentHandler.doPut 
> (PoolableComponentHandler.java:212)
>         at org.apache.avalon.excalibur.component.ComponentHandler.put 
> (ComponentHandler.java:425)
>         at  
> org.apache.avalon.excalibur.component.ExcaliburComponentSelector.release 
> (ExcaliburComponentSelector.java:305)
>         at  
> org.apache.cocoon.components.ExtendedComponentSelector.release 
> (ExtendedComponentSelector.java:286)
>         at  
> org.apache.cocoon.components.ExtendedComponentSelector.release 
> (ExtendedComponentSelector.java:283)
>         at  
> org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.recycle 
> (AbstractProcessingPipeline.java:658)
>         at  
> org.apache.cocoon.components.pipeline.impl.BaseCachingProcessingPipeline 
> .recycle(BaseCachingProcessingPipeline.java:77)
>         at  
> org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipe 
> line.recycle(AbstractCachingProcessingPipeline.java:963)
>         at org.apache.avalon.excalibur.pool.ResourceLimitingPool.put 
> (ResourceLimitingPool.java:438)
>         at  
> org.apache.avalon.excalibur.component.PoolableComponentHandler.doPut 
> (PoolableComponentHandler.java:212)
>         at org.apache.avalon.excalibur.component.ComponentHandler.put 
> (ComponentHandler.java:425)
>         at  
> org.apache.avalon.excalibur.component.ExcaliburComponentSelector.release 
> (ExcaliburComponentSelector.java:305)
>         at  
> org.apache.cocoon.components.ExtendedComponentSelector.release 
> (ExtendedComponentSelector.java:286)
>         at  
> org.apache.cocoon.components.EnvironmentDescription.release 
> (CocoonComponentManager.java:613)
>         at  
> org.apache.cocoon.components.CocoonComponentManager.endProcessing 
> (CocoonComponentManager.java:218)
>         at org.apache.cocoon.Cocoon.process(Cocoon.java:646)
>         at org.apache.cocoon.servlet.CocoonServlet.service 
> (CocoonServlet.java:1119)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>         at  
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter 
> (ApplicationFilterChain.java:237)
>         at org.apache.catalina.core.ApplicationFilterChain.doFilter 
> (ApplicationFilterChain.java:157)
>         at org.apache.catalina.core.StandardWrapperValve.invoke 
> (StandardWrapperValve.java:214)
>         at org.apache.catalina.core.StandardValveContext.invokeNext 
> (StandardValveContext.java:104)
>         at org.apache.catalina.core.StandardPipeline.invoke 
> (StandardPipeline.java:520)
>         at  
> org.apache.catalina.core.StandardContextValve.invokeInternal 
> (StandardContextValve.java:198)
>         at org.apache.catalina.core.StandardContextValve.invoke 
> (StandardContextValve.java:152)
>         at org.apache.catalina.core.StandardValveContext.invokeNext 
> (StandardValveContext.java:104)
>         at org.apache.catalina.core.StandardPipeline.invoke 
> (StandardPipeline.java:520)
>         at org.apache.catalina.core.StandardHostValve.invoke 
> (StandardHostValve.java:137)
>         at org.apache.catalina.core.StandardValveContext.invokeNext 
> (StandardValveContext.java:104)
>         at org.apache.catalina.valves.ErrorReportValve.invoke 
> (ErrorReportValve.java:118)
>         at org.apache.catalina.core.StandardValveContext.invokeNext 
> (StandardValveContext.java:102)
>         at org.apache.catalina.core.StandardPipeline.invoke 
> (StandardPipeline.java:520)
>         at org.apache.catalina.core.StandardEngineValve.invoke 
> (StandardEngineValve.java:109)
>         at org.apache.catalina.core.StandardValveContext.invokeNext 
> (StandardValveContext.java:104)
>         at org.apache.catalina.core.StandardPipeline.invoke 
> (StandardPipeline.java:520)
>         at org.apache.catalina.core.ContainerBase.invoke 
> (ContainerBase.java:929)
>         at org.apache.coyote.tomcat5.CoyoteAdapter.service 
> (CoyoteAdapter.java:160)
>         at org.apache.coyote.http11.Http11Processor.process 
> (Http11Processor.java:799)
>         at org.apache.coyote.http11.Http11Protocol 
> $Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
>         at org.apache.tomcat.util.net.TcpWorkerThread.runIt 
> (PoolTcpEndpoint.java:577)
>         at org.apache.tomcat.util.threads.ThreadPool 
> $ControlRunnable.run(ThreadPool.java:683)
>         at java.lang.Thread.run(Thread.java:534)
> java.lang.NullPointerException
>         at org.apache.cocoon.environment.AbstractEnvironment.release 
> (AbstractEnvironment.java:544)
>         at  
> org.apache.cocoon.environment.wrapper.MutableEnvironmentFacade.release 
> (MutableEnvironmentFacade.java:323)
>         at org.apache.cocoon.generation.ServerPagesGenerator.recycle 
> (ServerPagesGenerator.java:262)
>         at org.apache.avalon.excalibur.pool.ResourceLimitingPool.put 
> (ResourceLimitingPool.java:438)
>         at  
> org.apache.avalon.excalibur.component.PoolableComponentHandler.doPut 
> (PoolableComponentHandler.java:212)
>         at org.apache.avalon.excalibur.component.ComponentHandler.put 
> (ComponentHandler.java:425)
>         at  
> org.apache.avalon.excalibur.component.ExcaliburComponentSelector.release 
> (ExcaliburComponentSelector.java:305)
>         at  
> org.apache.cocoon.components.ExtendedComponentSelector.release 
> (ExtendedComponentSelector.java:286)
>         at  
> org.apache.cocoon.components.ExtendedComponentSelector.release 
> (ExtendedComponentSelector.java:283)
>         at  
> org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.recycle 
> (AbstractProcessingPipeline.java:658)
>         at  
> org.apache.cocoon.components.pipeline.impl.BaseCachingProcessingPipeline 
> .recycle(BaseCachingProcessingPipeline.java:77)
>         at  
> org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipe 
> line.recycle(AbstractCachingProcessingPipeline.java:963)
>         at org.apache.avalon.excalibur.pool.ResourceLimitingPool.put 
> (ResourceLimitingPool.java:438)
>         at  
> org.apache.avalon.excalibur.component.PoolableComponentHandler.doPut 
> (PoolableComponentHandler.java:212)
>         at org.apache.avalon.excalibur.component.ComponentHandler.put 
> (ComponentHandler.java:425)
>         at  
> org.apache.avalon.excalibur.component.ExcaliburComponentSelector.release 
> (ExcaliburComponentSelector.java:305)
>         at  
> org.apache.cocoon.components.ExtendedComponentSelector.release 
> (ExtendedComponentSelector.java:286)
>         at  
> org.apache.cocoon.components.EnvironmentDescription.release 
> (CocoonComponentManager.java:613)
>         at  
> org.apache.cocoon.components.CocoonComponentManager.endProcessing 
> (CocoonComponentManager.java:218)
>         at org.apache.cocoon.Cocoon.process(Cocoon.java:646)
>         at org.apache.cocoon.servlet.CocoonServlet.service 
> (CocoonServlet.java:1119)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>         at  
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter 
> (ApplicationFilterChain.java:237)
>         at org.apache.catalina.core.ApplicationFilterChain.doFilter 
> (ApplicationFilterChain.java:157)
>         at org.apache.catalina.core.StandardWrapperValve.invoke 
> (StandardWrapperValve.java:214)
>         at org.apache.catalina.core.StandardValveContext.invokeNext 
> (StandardValveContext.java:104)
>         at org.apache.catalina.core.StandardPipeline.invoke 
> (StandardPipeline.java:520)
>         at  
> org.apache.catalina.core.StandardContextValve.invokeInternal 
> (StandardContextValve.java:198)
>         at org.apache.catalina.core.StandardContextValve.invoke 
> (StandardContextValve.java:152)
>         at org.apache.catalina.core.StandardValveContext.invokeNext 
> (StandardValveContext.java:104)
>         at org.apache.catalina.core.StandardPipeline.invoke 
> (StandardPipeline.java:520)
>         at org.apache.catalina.core.StandardHostValve.invoke 
> (StandardHostValve.java:137)
>         at org.apache.catalina.core.StandardValveContext.invokeNext 
> (StandardValveContext.java:104)
>         at org.apache.catalina.valves.ErrorReportValve.invoke 
> (ErrorReportValve.java:118)
>         at org.apache.catalina.core.StandardValveContext.invokeNext 
> (StandardValveContext.java:102)
>         at org.apache.catalina.core.StandardPipeline.invoke 
> (StandardPipeline.java:520)
>         at org.apache.catalina.core.StandardEngineValve.invoke 
> (StandardEngineValve.java:109)
>         at org.apache.catalina.core.StandardValveContext.invokeNext 
> (StandardValveContext.java:104)
>         at org.apache.catalina.core.StandardPipeline.invoke 
> (StandardPipeline.java:520)
>         at org.apache.catalina.core.ContainerBase.invoke 
> (ContainerBase.java:929)
>         at org.apache.coyote.tomcat5.CoyoteAdapter.service 
> (CoyoteAdapter.java:160)
>         at org.apache.coyote.http11.Http11Processor.process 
> (Http11Processor.java:799)
>         at org.apache.coyote.http11.Http11Protocol 
> $Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
>         at org.apache.tomcat.util.net.TcpWorkerThread.runIt 
> (PoolTcpEndpoint.java:577)
>         at org.apache.tomcat.util.threads.ThreadPool 
> $ControlRunnable.run(ThreadPool.java:683)
>         at java.lang.Thread.run(Thread.java:534)
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


RE: Scaling Cocoon to handle a heavy load

Posted by Mike Dickson <mi...@yahoo.com>.
David, 

I have found that using Hibernate inside custom Actions to get to SQL data
has helped my application tremendously, especially when I have used the
Hibernate second level cache.  The speed is amazing and it scales much
better.

Mike

-----Original Message-----
From: David Bishop [mailto:d.bishop@waypointsystems.co.uk] 
Sent: Thursday, January 26, 2006 11:42 AM
To: users@cocoon.apache.org
Subject: Re: Scaling Cocoon to handle a heavy load

Hi Berin,

This sounds spot on, I shall do as you say and come back with any results.

Thanks!

Berin Loritsch wrote:

> See if these links help you at all:
>
> http://java.sun.com/docs/hotspot/index.html
> http://www.javaworld.com/javaworld/jw-01-2002/jw-0111-hotspotgc.html
>
http://developer.apple.com/documentation/Java/Reference/Java14VMOptions/VM_O
ptions/chapter_2_section_6.html 
>
> http://performance.netbeans.org/reports/gc/
> http://edocs.bea.com/wls/docs61/perform/JVMTuning.html
>
> I would play around with some of the more fine controlled JVM settings.
>
> Berin Loritsch wrote:
>
>> Let me find the link that might be able to help you.  This is not 
>> necessarily a Tomcat/Cocoon issue--it has to do with Java's memory 
>> management.  You will get OutOfMemoryErrors even when you haven't 
>> exceeded the -Xmx2048m command with sufficient load.
>>
>> The problem has to do with the generational garbage collection that 
>> Java itself has.  Basically, your memory is divided up into 
>> buckets--if any of them fills up then you get an OutOfMemoryError 
>> thrown.  Under normal use, there is no problem.  The JVM has plenty 
>> of time to move stale object references from one GC bucket to the 
>> next.  In a web environment, you can experience peaks that might 
>> instantaneously throw you over the edge.
>>
>> There is a JVM setting that you can use to increase the bucket sizes 
>> for the generational garbage collection buckets, and that's what I 
>> would need to find the link to.
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Scaling Cocoon to handle a heavy load

Posted by David Bishop <d....@waypointsystems.co.uk>.
Hi Berin,

This sounds spot on, I shall do as you say and come back with any results.

Thanks!

Berin Loritsch wrote:

> See if these links help you at all:
>
> http://java.sun.com/docs/hotspot/index.html
> http://www.javaworld.com/javaworld/jw-01-2002/jw-0111-hotspotgc.html
> http://developer.apple.com/documentation/Java/Reference/Java14VMOptions/VM_Options/chapter_2_section_6.html 
>
> http://performance.netbeans.org/reports/gc/
> http://edocs.bea.com/wls/docs61/perform/JVMTuning.html
>
> I would play around with some of the more fine controlled JVM settings.
>
> Berin Loritsch wrote:
>
>> Let me find the link that might be able to help you.  This is not 
>> necessarily a Tomcat/Cocoon issue--it has to do with Java's memory 
>> management.  You will get OutOfMemoryErrors even when you haven't 
>> exceeded the -Xmx2048m command with sufficient load.
>>
>> The problem has to do with the generational garbage collection that 
>> Java itself has.  Basically, your memory is divided up into 
>> buckets--if any of them fills up then you get an OutOfMemoryError 
>> thrown.  Under normal use, there is no problem.  The JVM has plenty 
>> of time to move stale object references from one GC bucket to the 
>> next.  In a web environment, you can experience peaks that might 
>> instantaneously throw you over the edge.
>>
>> There is a JVM setting that you can use to increase the bucket sizes 
>> for the generational garbage collection buckets, and that's what I 
>> would need to find the link to.
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Scaling Cocoon to handle a heavy load

Posted by Berin Loritsch <bl...@d-haven.org>.
See if these links help you at all:

http://java.sun.com/docs/hotspot/index.html
http://www.javaworld.com/javaworld/jw-01-2002/jw-0111-hotspotgc.html
http://developer.apple.com/documentation/Java/Reference/Java14VMOptions/VM_Options/chapter_2_section_6.html
http://performance.netbeans.org/reports/gc/
http://edocs.bea.com/wls/docs61/perform/JVMTuning.html

I would play around with some of the more fine controlled JVM settings.

Berin Loritsch wrote:
> Let me find the link that might be able to help you.  This is not 
> necessarily a Tomcat/Cocoon issue--it has to do with Java's memory 
> management.  You will get OutOfMemoryErrors even when you haven't 
> exceeded the -Xmx2048m command with sufficient load.
>
> The problem has to do with the generational garbage collection that 
> Java itself has.  Basically, your memory is divided up into 
> buckets--if any of them fills up then you get an OutOfMemoryError 
> thrown.  Under normal use, there is no problem.  The JVM has plenty of 
> time to move stale object references from one GC bucket to the next.  
> In a web environment, you can experience peaks that might 
> instantaneously throw you over the edge.
>
> There is a JVM setting that you can use to increase the bucket sizes 
> for the generational garbage collection buckets, and that's what I 
> would need to find the link to.



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Scaling Cocoon to handle a heavy load

Posted by Berin Loritsch <bl...@d-haven.org>.
Let me find the link that might be able to help you.  This is not 
necessarily a Tomcat/Cocoon issue--it has to do with Java's memory 
management.  You will get OutOfMemoryErrors even when you haven't 
exceeded the -Xmx2048m command with sufficient load.

The problem has to do with the generational garbage collection that Java 
itself has.  Basically, your memory is divided up into buckets--if any 
of them fills up then you get an OutOfMemoryError thrown.  Under normal 
use, there is no problem.  The JVM has plenty of time to move stale 
object references from one GC bucket to the next.  In a web environment, 
you can experience peaks that might instantaneously throw you over the edge.

There is a JVM setting that you can use to increase the bucket sizes for 
the generational garbage collection buckets, and that's what I would 
need to find the link to.

David Bishop wrote:
> Hello,
>
> I am hosting a website for a european project which hosts a number of 
> complicated database driven questionnaires on genetic testing the site 
> receives high peaks of usage and around 5000 visits, 200'000 hits per 
> month. The entire site is written in cocoon and I am having problems 
> in that during peak usage cocoon starts to return blank pages and 
> errors appear in the log from normally error free, the server begins 
> after that point to degrade in performance and Tomcat ends up 
> returning java.lang.OutOfMemoryError errors.
>
> The live server setup is
>
> Linux Fedora Core 2
> Apache Cocoon 2.1.6
> Apache Tomcat 5.0.28
> Java 1.4.2_07
> PostgreSQL 7.4.7
>
> The hardware of the live server is a Quad Xeon 3.0 with 2Gb RAM
>
> Replicating the server locally and hitting the site with Siege I am 
> able to bring the server down in a similar fashion using 15 concurrent 
> users after 10 minutes. Hitting one error free page which takes around 
> 1 second to render on a server with no load.
>
> The page is an aggregation of sitemap matches which run no more than 5 
> deep in sitemaps and has a number of XSP's which access a PostgreSQL 
> database using ESQL for various bits of the page, things start to go 
> nasty when the page response time drops to around 30 seconds.
>
> The Cocoon build however is only core blocks and there is nothing 
> fancy in the code just ESQL, XSP and XSL using the default transformer.
>
> I have tried playing with pool sizes
> I have tried upgrading to Cocoon 2.1.8 which had little effect on 
> performance, but much nicer error pages :-)
> I have tried upgrading to Apache Tomcat 5.5.12 with Java 1.5.0_06 
> which had a good effect on performance but still the site falls over 
> at about 30 concurrent users.
>
> Although I had to go back to Cocoon 2.1.6 as I got xspAttr errors with 
> Cocoon 2.1.8 and Tomcat 5.5.12, any clues on this would also be 
> appreciated!
>
> What I don't understand as I am running out of ideas and depth of 
> knowledge, is how to get better performance, I have set Java with the 
> parameter to -Xmx2048M but tomcat doesn't take any than around 200Mbs.
>
> What I would love is some advice as to what to try next?
>
> - should I look at running multiple instances of tomcat?
>
> Any advice would be greatly appreciated,
>
> David.
>
> David H Bishop
> Waypoint Systems Ltd
>
> Cocoon Error
> -------------------
> FATAL_E (2006-01-20) 19:19.38:590   [core.xslt-processor] 
> (/cocoon/egtorg/web/db/keyword/163/index.xhtml) 
> http-8080-Processor8/TraxErrorHandler: Error in TraxTransformer: 
> javax.xml.transform.TransformerException: 
> java.lang.ArrayIndexOutOfBoundsException: -1
> javax.xml.transform.TransformerException: 
> java.lang.ArrayIndexOutOfBoundsException: -1
>     at 
> org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1276) 
>
>     at 
> org.apache.xalan.transformer.TransformerImpl.run(TransformerImpl.java:3372) 
>
>     at 
> org.apache.xalan.transformer.TransformerHandlerImpl.endDocument(TransformerHandlerImpl.java:433) 
>
>     at 
> org.apache.cocoon.xml.AbstractXMLPipe.endDocument(AbstractXMLPipe.java:55) 
>
>     at 
> org.apache.cocoon.transformation.TraxTransformer.endDocument(TraxTransformer.java:562) 
>
>     at 
> org.apache.cocoon.sitemap.ContentAggregator.generate(ContentAggregator.java:134) 
>
>     at 
> org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.processXMLPipeline(AbstractCachingProcessingPipeline.java:258) 
>
>     at 
> org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process(AbstractProcessingPipeline.java:468) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.sitemap.SerializeNode.invoke(SerializeNode.java:120) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:68) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.ContainerNode.invoke(ContainerNode.java:31) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.CategoryNode.invokeByName(CategoryNode.java:62) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.sitemap.CallNode.invoke(CallNode.java:109) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:46) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.sitemap.PreparableMatchNode.invoke(PreparableMatchNode.java:130) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:68) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:138) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:68) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:89) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:240) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:180) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:243) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:117) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:46) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.sitemap.PreparableMatchNode.invoke(PreparableMatchNode.java:130) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:68) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:138) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:68) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:89) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:240) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:180) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:243) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:117) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:46) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.sitemap.PreparableMatchNode.invoke(PreparableMatchNode.java:130) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:68) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:138) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:68) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:89) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:240) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:180) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:243) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:117) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:46) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.sitemap.PreparableMatchNode.invoke(PreparableMatchNode.java:130) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:68) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:138) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:68) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:89) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:240) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:180) 
>
>     at 
> org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:243) 
>
>     at org.apache.cocoon.Cocoon.process(Cocoon.java:606)
>     at 
> org.apache.cocoon.servlet.CocoonServlet.service(CocoonServlet.java:1119)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>     at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) 
>
>     at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) 
>
>     at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) 
>
>     at 
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>
>     at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>
>     at 
> org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) 
>
>     at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) 
>
>     at 
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>
>     at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>
>     at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) 
>
>     at 
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>
>     at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) 
>
>     at 
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) 
>
>     at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>
>     at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
>
>     at 
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>
>     at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>
>     at 
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
>     at 
> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
>     at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) 
>
>     at 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) 
>
>     at 
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) 
>
>     at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) 
>
>     at java.lang.Thread.run(Thread.java:534)
> Caused by: java.lang.ArrayIndexOutOfBoundsException: -1
>     at org.apache.xml.utils.ObjectStack.pop(ObjectStack.java:137)
>     at 
> org.apache.xalan.transformer.TransformerImpl.popElemTemplateElement(TransformerImpl.java:2521) 
>
>     at 
> org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2178) 
>
>     at 
> org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1213) 
>
>     ... 78 more
> ---------
>
>
>
>
>
>
>
>
>
>
> Catalina.out Error
> ----------------------------
>
> java.lang.OutOfMemoryError
> java.lang.NullPointerException
>         at 
> org.apache.cocoon.environment.AbstractEnvironment.release(AbstractEnvironment.java:544) 
>
>         at 
> org.apache.cocoon.environment.wrapper.MutableEnvironmentFacade.release(MutableEnvironmentFacade.java:323) 
>
>         at 
> org.apache.cocoon.generation.ServerPagesGenerator.recycle(ServerPagesGenerator.java:262) 
>
>         at 
> org.apache.avalon.excalibur.pool.ResourceLimitingPool.put(ResourceLimitingPool.java:438) 
>
>         at 
> org.apache.avalon.excalibur.component.PoolableComponentHandler.doPut(PoolableComponentHandler.java:212) 
>
>         at 
> org.apache.avalon.excalibur.component.ComponentHandler.put(ComponentHandler.java:425) 
>
>         at 
> org.apache.avalon.excalibur.component.ExcaliburComponentSelector.release(ExcaliburComponentSelector.java:305) 
>
>         at 
> org.apache.cocoon.components.ExtendedComponentSelector.release(ExtendedComponentSelector.java:286) 
>
>         at 
> org.apache.cocoon.components.ExtendedComponentSelector.release(ExtendedComponentSelector.java:283) 
>
>         at 
> org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.recycle(AbstractProcessingPipeline.java:658) 
>
>         at 
> org.apache.cocoon.components.pipeline.impl.BaseCachingProcessingPipeline.recycle(BaseCachingProcessingPipeline.java:77) 
>
>         at 
> org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.recycle(AbstractCachingProcessingPipeline.java:963) 
>
>         at 
> org.apache.avalon.excalibur.pool.ResourceLimitingPool.put(ResourceLimitingPool.java:438) 
>
>         at 
> org.apache.avalon.excalibur.component.PoolableComponentHandler.doPut(PoolableComponentHandler.java:212) 
>
>         at 
> org.apache.avalon.excalibur.component.ComponentHandler.put(ComponentHandler.java:425) 
>
>         at 
> org.apache.avalon.excalibur.component.ExcaliburComponentSelector.release(ExcaliburComponentSelector.java:305) 
>
>         at 
> org.apache.cocoon.components.ExtendedComponentSelector.release(ExtendedComponentSelector.java:286) 
>
>         at 
> org.apache.cocoon.components.EnvironmentDescription.release(CocoonComponentManager.java:613) 
>
>         at 
> org.apache.cocoon.components.CocoonComponentManager.endProcessing(CocoonComponentManager.java:218) 
>
>         at org.apache.cocoon.Cocoon.process(Cocoon.java:646)
>         at 
> org.apache.cocoon.servlet.CocoonServlet.service(CocoonServlet.java:1119)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) 
>
>         at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) 
>
>         at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) 
>
>         at 
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>
>         at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>
>         at 
> org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) 
>
>         at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) 
>
>         at 
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>
>         at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>
>         at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) 
>
>         at 
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>
>         at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) 
>
>         at 
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) 
>
>         at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>
>         at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
>
>         at 
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>
>         at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>
>         at 
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
>         at 
> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
>         at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) 
>
>         at 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) 
>
>         at 
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) 
>
>         at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) 
>
>         at java.lang.Thread.run(Thread.java:534)
> java.lang.NullPointerException
>         at 
> org.apache.cocoon.environment.AbstractEnvironment.release(AbstractEnvironment.java:544) 
>
>         at 
> org.apache.cocoon.environment.wrapper.MutableEnvironmentFacade.release(MutableEnvironmentFacade.java:323) 
>
>         at 
> org.apache.cocoon.generation.ServerPagesGenerator.recycle(ServerPagesGenerator.java:262) 
>
>         at 
> org.apache.avalon.excalibur.pool.ResourceLimitingPool.put(ResourceLimitingPool.java:438) 
>
>         at 
> org.apache.avalon.excalibur.component.PoolableComponentHandler.doPut(PoolableComponentHandler.java:212) 
>
>         at 
> org.apache.avalon.excalibur.component.ComponentHandler.put(ComponentHandler.java:425) 
>
>         at 
> org.apache.avalon.excalibur.component.ExcaliburComponentSelector.release(ExcaliburComponentSelector.java:305) 
>
>         at 
> org.apache.cocoon.components.ExtendedComponentSelector.release(ExtendedComponentSelector.java:286) 
>
>         at 
> org.apache.cocoon.components.ExtendedComponentSelector.release(ExtendedComponentSelector.java:283) 
>
>         at 
> org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.recycle(AbstractProcessingPipeline.java:658) 
>
>         at 
> org.apache.cocoon.components.pipeline.impl.BaseCachingProcessingPipeline.recycle(BaseCachingProcessingPipeline.java:77) 
>
>         at 
> org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.recycle(AbstractCachingProcessingPipeline.java:963) 
>
>         at 
> org.apache.avalon.excalibur.pool.ResourceLimitingPool.put(ResourceLimitingPool.java:438) 
>
>         at 
> org.apache.avalon.excalibur.component.PoolableComponentHandler.doPut(PoolableComponentHandler.java:212) 
>
>         at 
> org.apache.avalon.excalibur.component.ComponentHandler.put(ComponentHandler.java:425) 
>
>         at 
> org.apache.avalon.excalibur.component.ExcaliburComponentSelector.release(ExcaliburComponentSelector.java:305) 
>
>         at 
> org.apache.cocoon.components.ExtendedComponentSelector.release(ExtendedComponentSelector.java:286) 
>
>         at 
> org.apache.cocoon.components.EnvironmentDescription.release(CocoonComponentManager.java:613) 
>
>         at 
> org.apache.cocoon.components.CocoonComponentManager.endProcessing(CocoonComponentManager.java:218) 
>
>         at org.apache.cocoon.Cocoon.process(Cocoon.java:646)
>         at 
> org.apache.cocoon.servlet.CocoonServlet.service(CocoonServlet.java:1119)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) 
>
>         at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) 
>
>         at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) 
>
>         at 
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>
>         at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>
>         at 
> org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) 
>
>         at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) 
>
>         at 
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>
>         at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>
>         at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) 
>
>         at 
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>
>         at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) 
>
>         at 
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) 
>
>         at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>
>         at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
>
>         at 
> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
>
>         at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
>
>         at 
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
>         at 
> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
>         at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) 
>
>         at 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) 
>
>         at 
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) 
>
>         at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) 
>
>         at java.lang.Thread.run(Thread.java:534)
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
>
>



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Scaling Cocoon to handle a heavy load

Posted by Tomasz Nowak <tn...@netventure.pl>.
Ralph Goers <Ra...@dslextreme.com> wrote:
>
> I had problems in production recently. When it hangs get a JVM stack
> trace.  You may find that you have lock contention or something else
> that will readily show up.

http://www.biochip.pl/hs_err_pid17443.log.txt

So what does it tell you?

It tells me only that:
- Java seems to dont care about my -XX:MaxPermSize=256m,
  (do you see the PSPermGen, OldGen?)
- If that crashed because of a PermSpace, why has it logged
  "OutOfMemoryError: Heap space" not "OutOfMemoryError: PermGen space"?

-- 
T.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Scaling Cocoon to handle a heavy load

Posted by Ralph Goers <Ra...@dslextreme.com>.
I had problems in production recently. When it hangs get a JVM stack 
trace.  You may find that you have lock contention or something else 
that will readily show up.

Ralph

Tomasz Nowak wrote:
> Ralph Goers <Ra...@dslextreme.com> wrote:
>   
>> The version I am running in production is slightly older - it was a
>> snapshot a little bit before 2.1.7 was released.  We don't use XSPs,
>> database, mail or lucene though. And we see absolutely no memory
>> leaks. 
>>
>> Have you run your app under a profile?
>>     
>
> I'm evaluating jProfiler on development machine, but I can't
> replicate the hangs. I'm not sure if I able to plug the
> profiler class into the production server. Anyway I'm
> just a Cocoon user willing to build webapplication easily ;)
>
> PS. For the time being I've found out that increasing PermSpace
> to (!) 512m for 8 cocoon instances might be helpfull.
> Is that possible and reasonable?
>
>   

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Scaling Cocoon to handle a heavy load

Posted by Tomasz Nowak <tn...@netventure.pl>.
Ralph Goers <Ra...@dslextreme.com> wrote:
>
> The version I am running in production is slightly older - it was a
> snapshot a little bit before 2.1.7 was released.  We don't use XSPs,
> database, mail or lucene though. And we see absolutely no memory
> leaks. 
> 
> Have you run your app under a profile?

I'm evaluating jProfiler on development machine, but I can't
replicate the hangs. I'm not sure if I able to plug the
profiler class into the production server. Anyway I'm
just a Cocoon user willing to build webapplication easily ;)

PS. For the time being I've found out that increasing PermSpace
to (!) 512m for 8 cocoon instances might be helpfull.
Is that possible and reasonable?

-- 
T.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Scaling Cocoon to handle a heavy load

Posted by Ralph Goers <Ra...@dslextreme.com>.
Tomasz Nowak wrote:
> Please read again the whole thread, also the fork of it.
>
> Tomcat 5.5.15, 1024m heap, 256m perm, 8 vhost, 8 webapps, each webapp
> is Cocoon 2.1.7, the only blocks: databases, xsp, mail, lucene.
> No advanced xsp's. Lucene not used. Total load < 20-30 concurrent req.
>
> And these Cocoons crash jvm 1.5.0_06-b05 - Tomcat hangs with no error
> at all or hangs with OOE heap space error. Randomly, once-twice a day.
>
> They say the webapp has memory leaks probably.
> Shall I believe them? ;)
>   
The version I am running in production is slightly older - it was a 
snapshot a little bit before 2.1.7 was released.  We don't use XSPs, 
database, mail or lucene though. And we see absolutely no memory leaks. 

Have you run your app under a profile?

Ralph

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Scaling Cocoon to handle a heavy load

Posted by Tomasz Nowak <tn...@netventure.pl>.
Ralph Goers <Ra...@dslextreme.com> wrote:
>
> I'm not sure about your problem since it doesn't mention Cocoon, but
> I'm wondering what version of Cocoon is being used. This sounds like
> problems with Jisp. That was solved by moving to ehCache.

Please read again the whole thread, also the fork of it.

Tomcat 5.5.15, 1024m heap, 256m perm, 8 vhost, 8 webapps, each webapp
is Cocoon 2.1.7, the only blocks: databases, xsp, mail, lucene.
No advanced xsp's. Lucene not used. Total load < 20-30 concurrent req.

And these Cocoons crash jvm 1.5.0_06-b05 - Tomcat hangs with no error
at all or hangs with OOE heap space error. Randomly, once-twice a day.

They say the webapp has memory leaks probably.
Shall I believe them? ;)

-- 
T.



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Scaling Cocoon to handle a heavy load

Posted by Ralph Goers <Ra...@dslextreme.com>.
I'm not sure about your problem since it doesn't mention Cocoon, but I'm 
wondering what version of Cocoon is being used. This sounds like 
problems with Jisp. That was solved by moving to ehCache.

Tomasz Nowak wrote:
> David Bishop <d....@waypointsystems.co.uk> wrote:
>   
>> Hello,
>>
>> I am hosting a website for a european project which hosts a number of
>> complicated database driven questionnaires on genetic testing the
>> site receives high peaks of usage and around 5000 visits, 200'000
>> hits per month. The entire site is written in cocoon and I am having
>> problems in that during peak usage cocoon starts to return blank
>> pages and errors appear in the log from normally error free, the
>> server begins after that point to degrade in performance and Tomcat
>> ends up returning java.lang.OutOfMemoryError errors.
>>     
>
> Quite the same problems here. 
> http://www.mail-archive.com/users@tomcat.apache.org/msg07115.html
>
>   

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Re: Scaling Cocoon to handle a heavy load

Posted by Tomasz Nowak <tn...@netventure.pl>.
David Bishop <d....@waypointsystems.co.uk> wrote:
>
> Hello,
> 
> I am hosting a website for a european project which hosts a number of
> complicated database driven questionnaires on genetic testing the
> site receives high peaks of usage and around 5000 visits, 200'000
> hits per month. The entire site is written in cocoon and I am having
> problems in that during peak usage cocoon starts to return blank
> pages and errors appear in the log from normally error free, the
> server begins after that point to degrade in performance and Tomcat
> ends up returning java.lang.OutOfMemoryError errors.

Quite the same problems here. 
http://www.mail-archive.com/users@tomcat.apache.org/msg07115.html

-- 
T.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org