Analyzing more thread dumps, I found that PageLoader is not the only
contention point, but still Tapestry service stack warmup is the
bottleneck. Any ideas?
Andrus
On Apr 24, 2007, at 5:00 PM, Andrus Adamchik wrote:
Maybe that's a FAQ that I overlooked somehow, but a google search
wasn't helpful in solving the problem below...
I have a busy application running on Tapestry 4.0.2 / Jetty 6 / JDK
1.5. On startup the JVM would sometimes crash overwhelmed with
requests. If it survives for the first 1-2 minutes, it warms up and
runs just fine thereafter. I was able to take thread dump right
before it crashed (see below). Most request threads (there's about
a hundred per JVM) are being stuck waiting for shared resources,
somewhere down PageLoader stack.
So it would be nice to eagerly warm up Tapestry stack. I tried
eager-loading PageLoader service, but I guess this doesn't load
needed dependencies, as I got a bunch of startup errors for the
following configuration:
<contribution configuration-id="hivemind.EagerLoad">
<load service-id="tapestry.page.PageLoader" />
</contribution>
So my question is: how can I init Tapestry services eagerly from
within the ApplicationServlet.init(), before the gate is opened and
requests start to come in? I can probably hack some kind of startup
filter that throttles the first N requests, but I hope there's a
"standard" way of handling that.
Any insights are appreciated.
Thanks
Andrus
at org.mortbay.jetty.webapp.WebAppClassLoader.getResource
(WebAppClassLoader.java:221)
- waiting to lock <0x794637d0> (a
org.mortbay.jetty.webapp.WebAppClassLoader)
at org.apache.hivemind.impl.DefaultClassResolver.getResource
(DefaultClassResolver.java:50)
at org.apache.hivemind.util.LocalizedResourceFinder.resolve
(LocalizedResourceFinder.java:71)
at
org.apache.hivemind.util.ClasspathResource.getLocalization
(ClasspathResource.java:57)
at
org.apache.tapestry.l10n.DefaultResourceLocalizer.findLocalization
(DefaultResourceLocalizer.java:36)
at $ResourceLocalizer_11223035a49.findLocalization
($ResourceLocalizer_11223035a49.java)
at $ResourceLocalizer_112230359be.findLocalization
($ResourceLocalizer_112230359be.java)
at
org.apache.tapestry.services.impl.TemplateSourceImpl.findStandardTempl
ate(TemplateSourceImpl.java:333)
at
org.apache.tapestry.services.impl.TemplateSourceImpl.findTemplate
(TemplateSourceImpl.java:245)
at
org.apache.tapestry.services.impl.TemplateSourceImpl.getTemplate
(TemplateSourceImpl.java:188)
at $TemplateSource_112230359ce.getTemplate
($TemplateSource_112230359ce.java)
at
org.apache.tapestry.services.impl.ComponentTemplateLoaderImpl.loadTemp
late(ComponentTemplateLoaderImpl.java:55)
at $ComponentTemplateLoader_11223035a4e.loadTemplate
($ComponentTemplateLoader_11223035a4e.java)
at
org.apache.tapestry.pageload.PageLoader.loadTemplateForComponent
(PageLoader.java:648)
at org.apache.tapestry.BaseComponent.readTemplate
(BaseComponent.java:77)
at org.apache.tapestry.BaseComponent.finishLoad
(BaseComponent.java:107)
at $ContentModuleComponent_17.finishLoad
($ContentModuleComponent_17.java)
at
org.apache.tapestry.pageload.PageLoader.constructComponent
(PageLoader.java:439)
at
org.apache.tapestry.pageload.PageLoader.createImplicitComponent
(PageLoader.java:494)
at
org.apache.tapestry.services.impl.TemplateSourceImpl.constructTemplate
Instance(TemplateSourceImpl.java:395)
- waiting to lock <0x7b3f66e8> (a
org.apache.tapestry.services.impl.TemplateSourceImpl)
at
org.apache.tapestry.services.impl.TemplateSourceImpl.parseTemplate
(TemplateSourceImpl.java:383)
at
org.apache.tapestry.services.impl.TemplateSourceImpl.getOrParseTemplat
e(TemplateSourceImpl.java:360)
at
org.apache.tapestry.services.impl.TemplateSourceImpl.findStandardTempl
ate(TemplateSourceImpl.java:340)
at
org.apache.tapestry.services.impl.TemplateSourceImpl.findTemplate
(TemplateSourceImpl.java:245)
at
org.apache.tapestry.services.impl.TemplateSourceImpl.getTemplate
(TemplateSourceImpl.java:188)
at $TemplateSource_112230359ce.getTemplate
($TemplateSource_112230359ce.java)
at
org.apache.tapestry.services.impl.ComponentTemplateLoaderImpl.loadTemp
late(ComponentTemplateLoaderImpl.java:55)
at $ComponentTemplateLoader_11223035a4e.loadTemplate
($ComponentTemplateLoader_11223035a4e.java)
at
org.apache.tapestry.pageload.PageLoader.loadTemplateForComponent
(PageLoader.java:648)
at org.apache.tapestry.BaseComponent.readTemplate
(BaseComponent.java:77)
at org.apache.tapestry.BaseComponent.finishLoad
(BaseComponent.java:107)
at $ContentModuleComponent_17.finishLoad
($ContentModuleComponent_17.java)
at
org.apache.tapestry.pageload.PageLoader.constructComponent
(PageLoader.java:439)
at
org.apache.tapestry.pageload.PageLoader.createImplicitComponent
(PageLoader.java:494)
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]