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]

Reply via email to