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