Hi all,

Thanks for your answers.

I've already stripped down the supported locale list to the only one
needed. We still have two missed hit for each tried locale.

The tapestry.file-check-interval doesn't help either. The
file-check-interval is seems to be used only for existing files.

I guess the decorator will do the trick. Thanks.

Cheers,

--
ChristianZen

2009/10/29 Ulrich Stärk <u...@spielviel.de>:
> Doesn't limiting the supported locales to just the ones you support help?
>
> http://tapestry.apache.org/tapestry5.0/guide/conf.html
>
> Uli
>
> Am 29.10.2009 19:39 schrieb Christiansen Merel:
>>
>> Hello out there,
>>
>> We're running a quite busy website with tapestry 5.0.18 and we're
>> hitting a performance problem with the ClasspathResource class.
>>
>> We're using classpath asset and none of them is localised. For each
>> hit on a page using a classpath asset, we end having 2 missed queries
>> on the ClassLoader for potential localized version of the asset. It
>> does not really slow down the application throughput but we end with
>> an __huge__ CPU consumption.
>>
>> The javacore stack shows numerous threads scanning jar files:
>>
>> 3XMTHREADINFO      "[ACTIVE] ExecuteThread: '2' for queue:
>> 'weblogic.kernel.Default (self-tuning)'" (TID:0x3700E400,
>> sys_thread_t:0x3393D030, state:B, native ID:0x009AB0B3) prio=5
>> 4XESTACKTRACE          at
>> java/util/zip/ZipFile.getEntry(ZipFile.java:287(Compiled Code))
>> 4XESTACKTRACE          at
>> java/util/jar/JarFile.getEntry(JarFile.java:283(Compiled Code))
>> 4XESTACKTRACE          at
>> java/util/jar/JarFile.getJarEntry(JarFile.java:266(Compiled Code))
>> 4XESTACKTRACE          at
>> sun/misc/URLClassPath$JarLoader.getResource(URLClassPath.java:949(Compiled
>> Code))
>> 4XESTACKTRACE          at
>>
>> sun/misc/URLClassPath$JarLoader.findResource(URLClassPath.java:938(Compiled
>> Code))
>> 4XESTACKTRACE          at
>> sun/misc/URLClassPath.findResource(URLClassPath.java:299(Compiled
>> Code))
>> 4XESTACKTRACE          at
>> java/net/URLClassLoader$3.run(URLClassLoader.java:784(Compiled Code))
>> 4XESTACKTRACE          at
>> java/security/AccessController.doPrivileged(AccessController.java:219)
>> 4XESTACKTRACE          at
>> java/net/URLClassLoader.findResource(URLClassLoader.java:781(Compiled
>> Code))
>> 4XESTACKTRACE          at
>> java/lang/ClassLoader.getResource(ClassLoader.java:420(Compiled Code))
>> 4XESTACKTRACE          at
>> java/lang/ClassLoader.getResource(ClassLoader.java:415(Compiled Code))
>> 4XESTACKTRACE          at
>> java/lang/ClassLoader.getResource(ClassLoader.java:415(Compiled Code))
>> 4XESTACKTRACE          at
>>
>> weblogic/utils/classloaders/GenericClassLoader.getResourceInternal(GenericClassLoader.java:170(Compiled
>> Code))
>> 4XESTACKTRACE          at
>>
>> weblogic/utils/classloaders/GenericClassLoader.getResource(GenericClassLoader.java:187(Compiled
>> Code))
>> 4XESTACKTRACE          at
>>
>> weblogic/utils/classloaders/FilteringClassLoader.getResourceInternal(FilteringClassLoader.java:89(Compiled
>> Code))
>> 4XESTACKTRACE          at
>>
>> weblogic/utils/classloaders/GenericClassLoader.getResourceInternal(GenericClassLoader.java:155(Compiled
>> Code))
>> 4XESTACKTRACE          at
>>
>> weblogic/utils/classloaders/GenericClassLoader.getResource(GenericClassLoader.java:187(Compiled
>> Code))
>> 4XESTACKTRACE          at
>> java/lang/ClassLoader.getResource(ClassLoader.java:415(Compiled Code))
>> 4XESTACKTRACE          at
>>
>> weblogic/utils/classloaders/GenericClassLoader.getResource(GenericClassLoader.java:190(Compiled
>> Code))
>> 4XESTACKTRACE          at
>>
>> weblogic/utils/classloaders/ChangeAwareClassLoader.getResource(ChangeAwareClassLoader.java:118(Compiled
>> Code))
>> 4XESTACKTRACE          at
>>
>> org/apache/tapestry5/ioc/internal/util/ClasspathResource.toURL(ClasspathResource.java:59(Compiled
>> Code))
>> 4XESTACKTRACE          at
>>
>> org/apache/tapestry5/ioc/internal/util/AbstractResource.exists(AbstractResource.java:137(Compiled
>> Code))
>> 4XESTACKTRACE          at
>>
>> org/apache/tapestry5/ioc/internal/util/AbstractResource.forLocale(AbstractResource.java:100(Compiled
>> Code))
>> 4XESTACKTRACE          at
>>
>> org/apache/tapestry5/internal/services/AssetSourceImpl.findRelativeAsset(AssetSourceImpl.java:99(Compiled
>> Code))
>> 4XESTACKTRACE          at
>>
>> org/apache/tapestry5/internal/services/AssetSourceImpl.getAsset(AssetSourceImpl.java:93(Compiled
>> Code))
>> 4XESTACKTRACE          at
>> $AssetSource_124955c0e4c.getAsset($AssetSource_124955c0e4c.java(Compiled
>> Code))
>> 4XESTACKTRACE          at
>>
>> org/apache/tapestry5/internal/transform/AbstractIncludeAssetWorker$1.perform(AbstractIncludeAssetWorker.java:79(Compiled
>> Code))
>> 4XESTACKTRACE          at
>>
>> fr/poleemploi/d2i/tapestry/navigation/unifiee/components/Bandeau.setupRender(Bandeau.java(Compiled
>> Code))
>>
>> The stack comes from weblogic/aix run but the problem is the same on
>> other platforms as well.
>>
>> Does anyone has ever experienced such problems ?
>>
>> The performance penalty seems to be located in the
>> AbstractResource.forLocale() method, especially the potential.exists()
>> call. This part of code haven't evolved with the 5.1.x version.
>>
>> Does anybody have any idea on how to get around this problem ?
>>
>> Thanks in advance
>>
>> --
>> ChristianZen
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
>> For additional commands, e-mail: users-h...@tapestry.apache.org
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>



-- 
ChristianZen

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to