blob: 607e00f041d48f0c06ce7f9bc9fdee692eab3a43 [file] [log] [blame]
------
Development Guide - Performance Tuning
------
Jesse Kuhnert
------
22 Jun 2007
------
Performance Tuning
There are a number of new options available to help you tune Tapestry's internal configuration to better suite you particular
applications scaling requirements. This section will go over what these options are and how to use them.
* Page Pooling
The internal pooling of Tapestry pages now delegates the majority of actual pooling work to the {{{http://jakarta.apache.org/commons/pool/}commons-pool}}
library. This means that your Tapestry application can now actually release idle pages from memory when they are no longer needed and hopefully increase
the reliability/resources used of your production applications. All of the key configuration options are available in the HiveMind <<<hivemind.FactoryDefaults>>>
configuration point which means that you can control these options via your servlet context parameters/.application file/hivemind/jvm system properties. The current
options available are:
+-------------------------------------------------------------------------------------------------------------------------
<contribution configuration-id="hivemind.FactoryDefaults">
<default symbol="org.apache.tapestry.page-pool-min-idle" value="1" />
<default symbol="org.apache.tapestry.page-pool-max-active" value="-1" />
<default symbol="org.apache.tapestry.page-pool-max-idle" value="-1" />
<default symbol="org.apache.tapestry.page-pool-evict-thread-sleep-minutes" value="4" />
<default symbol="org.apache.tapestry.page-pool-evict-idle-page-minutes" value="40" />
</contribution>
+-------------------------------------------------------------------------------------------------------------------------
This configuration is based around using the {{{http://jakarta.apache.org/commons/pool/api-1.3/org/apache/commons/pool/impl/GenericKeyedObjectPool.html}GenericKeyedObjectPool}}
implementation in particular. The key used to store each Tapestry page is a combination of the pageName and Locale of the page. The meaning and use of each value is as follows:
* <<org.apache.tapestry.page-pool-min-idle>> - The minimum number of page instances that must not be evicted for a given key. The default value of 1 means that we want at least
one instance of each unique page to be available at any given time.
* <<org.apache.tapestry.page-pool-max-active>> - The maximum number of total pages that may be active in the pool. The default value of -1 indicates an unlimited number.
* <<org.apache.tapestry.page-pool-max-idle>> - The maximum number of idle pages that can exist in the pool. The -1 value here also means unlimited. (but doesn't mean they won't be evicted)
* <<org.apache.tapestry.page-pool-evict-thread-sleep-minutes>> - This pool launches a seperate thread which is responsible for managing and evicted expired pages from the pool
when appropriate. This value controls the number of minutes this thread should sleep before checking for expired pages.
* <<org.apache.tapestry.page-pool-evict-idle-page-minutes>> - The number of minutes that a page must be idle for before being eligable for eviction from the pool.