Confluence Docs 3.1 : Cache Performance Tuning
This page last changed on Sep 01, 2009 by ggaskell.
Confluence performance can be significantly affected by the performance of its caches. It is essential for the administrator of a large production installation of Confluence to tune the caches to suit its environment. There are several configurable parameters for each of the cache regions, most notably cache size, cache expiry delay and eviction policy. In the majority of the cases, cache size is the parameter you would want to change. Fortunately, from Confluence 3.0, it is very easy to adjust cache sizes through the Administration Console. However, if you need to modify parameters other than a cache size, you would need to modify the relevant configuration files manually.
The cache performance information for your Confluence installation is available under Administration > Cache Statistics. More information about the numbers displayed here is available on Cache Statistics. On this page: Cache tuning example
The caches above are of size 1000 (meaning that it can contain up to 1000 objects), which is the default size for caches in the default cache scheme. Refer to Confluence Cache Schemes for more explanation. You can tell when a cache size needs to be increased because the cache has both:
Check the 'effectiveness' versus the 'percent used'. A cache with a low percent used need not have its size lowered; it does not use more memory until the cache is filled. Based on this, the sizes of the "Attachments", "Database Queries", and "Users" caches should be increased to improve their effectiveness. As the stored information gets older or unused it will expire and be eliminated from the cache. Cache expiry may be based on time or on frequency of use.
Finding the configuration fileThe caches are configured in ehcache.xml (for standard editions) or confluence-coherence-cache-config-clustered.xml (for clustered editions) which is stored in <confluence-home>/config/.
Cache Key MappingsThe cache configuration file configures caches by their keys. When you move your mouse over the the cache names displayed on the cache statistics page, a tooltip will indicate the actual cache key for that cache name. Using our example from the table above, if we were to modify parameters for the Users cache we would need to change the cache with the key com.atlassian.user.impl.hibernate.DefaultHibernateUser. Do not get confused with Users (External Mappings) and Users (External Groups) which are in themselves, two separate caches. "Users" is the friendly name for com.atlassian.user.impl.hibernate.DefaultHibernateUser. Standard Editions of ConfluenceIn standard editions of Confluence, the caching layer is Ehcache. Understanding the Ehcache Configuration FileFor more information about the Ehcache configuration file and a full reference on Ehcache configuration, please refer to the Ehcache configuration documentation. Converting your Coherence configuration to Ehcache
To maintain your existing cache configuration file settings, you will need to transfer any cache customisations you have implemented in the Coherence cache configuration file (confluence-coherence-cache-config.xml) to the relevant entries in the Ehcache cache configuration file (ehcache.xml). Each cache has a cache-mapping element in the Coherence file (of which there is an equivalent cache element in the ehcache.xml file). Unfortunately, copying across your customisations is not quite a straightforward process because the Coherence file defines several 'caching schemes' to store the actual cache values, which in turn are referenced by the cache-mapping elements. In contrast, the ehcache.xml file does not support caching schemes and a cache's values are expressed explicitly in separate parameters of a cache element. To convert your Coherence cache configuration file customisations across to the equivalent Ehcache file:
Mappings table showing how elements of the Coherence cache configuration file map to parameters of the equivalent Ehcache file.
Clustered Editions of ConfluenceUnderstanding the Coherence configuration fileThe Coherence configuration file is a mapping of cache keys to cache schemes. Each cache scheme controls the expiry, eviction policy and size of the caches linked to it. A cache scheme can extend another scheme. For a full reference, see the Oracle's Coherence cache configuration documentation. Defining Caching Scheme Mappings in Coherence Cache config fileIf a cache key does not have an explicit definition in the caching scheme mappings (defined in confluence-coherence-cache-config.xml) then it will use the "default" cache-mapping. In our example, com.atlassian.user.impl.hibernate.DefaultHibernateUser is not explicitly defined in the caching scheme mappings. Hence to increase the expiry-delay to 2 hours, we will need to define the mapping ourselves and add the following within the <caching-scheme-mapping>...</caching-scheme-mapping> tags: <cache-mapping> <cache-name>com.atlassian.user.impl.hibernate.DefaultHibernateUser</cache-name> <scheme-name>cache:com.atlassian.user.impl.hibernate.DefaultHibernateUser</scheme-name> </cache-mapping> Then we will need to define a cache schema with name cache:com.atlassian.user.impl.hibernate.DefaultHibernateUser within <caching-schemes>...</caching-schemes> tags. <local-scheme> <scheme-name>cache:com.atlassian.user.impl.hibernate.DefaultHibernateUser</scheme-name> <scheme-ref>default</scheme-ref> <high-units>10000</high-units> <expiry-delay>7200</expiry-delay> </local-scheme> It's possible to define a local-scheme mapping for a cache key without defining certain parameters (e.g. <high-units> ). In such a cases, their parameters will be inherited from scheme-ref scheme, which is the default scheme in our case. Important Caches
Cache Tuning Follow-UpAfter you have made changes to your cache config, doing a follow up on the changes in the next week or after the expected performance spike would be important. Make sure that you take a screenshot of the cache statistics before and after the change. Then compare them with the cache statistics in the later period where performance improvement is expected.
RELATED TOPICSCache Performance Tuning for Specific Problems |
![]() |
Document generated by Confluence on Dec 10, 2009 18:41 |