|
Confluence のキャッシュをチューニングする具体例として、次の表を見てみましょう。
キャッシュ | 使用率(%) | 有効率(%) | オブジェクト/サイズ | ヒット/ミス/有効期限 |
|---|---|---|---|---|
添付ファイル | 87% | 29% | 874 時間 365 日 | 78226/189715/187530 |
コンテンツ添付ファイル | 29% | 9% | 292 時間 365 日 | 4289/41012/20569 |
コメント本文 | 98% | 81% | 987 時間 365 日 | 28717/6671/5522 |
コンテンツ ラベル マッピング | 29% | 20% | 294 時間 365 日 | 4693/18185/9150 |
データベース クエリ | 96% | 54% | 968 時間 365 日 | 105949/86889/83334 |
オブジェクト プロパティ | 27% | 18% | 279 時間 365 日 | 5746/25386/8102 |
ページ コメント | 26% | 11% | 261 時間 365 日 | 2304/17178/8606 |
ユーザー | 98% | 5% | 982 時間 365 日 | 6561/115330/114279 |
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:
「有効率」と「使用率」の対応関係を確認します。使用率が低いキャッシュのサイズを下げる必要はありません。キャッシュがいっぱいになるまでメモリの消費は増えません。
上の条件をもとにすると、"添付ファイル"、"データベース クエリ"、"ユーザー" のキャッシュは、サイズを拡大して、有効率を改善する必要があります。
保存された情報が古くなったり、使用されなかったりすると、情報は期限切れとなり、キャッシュから除去されます。キャッシュの有効期間は使用回数や使用頻度をもとにしています。
使用率と有効率の両方が低いキャッシュについては、できることはあまりありません。時間が経つにつれて、キャッシュに含まれるオブジェクトが増え、それらに対して繰り返しリクエストが行われると、キャッシュの有効性が高まります。
The 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/.
The 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.
![Confluence 4.0 > Cache Performance Tuning > cacheKey.png (cacheKey.png [Added example of mousing-over a cache name to display its cache key.])](https://confluence.atlassian.com/download/attachments/269985172/cacheKey.png?version=1&modificationDate=1243843988981&api=v2)
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.
In standard editions of Confluence, the caching layer is Ehcache.
For more information about the Ehcache configuration file and a full reference on Ehcache configuration, please refer to the Ehcache configuration documentation.
This section only applies to customers who:
|
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 ( Each cache has a 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.
|
The 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.
If 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.
The following suggestions are general guidelines. In cases of large databases, 20-30% of the size of the table may be unnecessarily large. Check the effectiveness and Percent Used categories in the cache for more specific assessments. |
com.atlassian.confluence.core.ContentEntityObject (known as Content Objects cache)select count(*) from CONTENT where prevver is null.com.atlassian.confluence.core.ContentEntityObject.bodyContents (known as Content Body Mappings cache)select count(*) from CONTENT where prevver is null.com.atlassian.confluence.security.PermissionCheckDispatcher.isPermitted() (known as User Authorized URLs cache)com.atlassian.user.impl.hibernate.DefaultHibernateUser (known as Users cache)select count (*) from users. Note that by default, this will also control the LDAP user's cache, including expiration.com.atlassian.confluence.security.SpacePermission (known as Permissions cache)select count(*) from SPACEPERMISSIONS.After 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.
You can monitor what's in the cache by using a JSP included in the Confluence distribution. Browse to <base-URL>/admin/cachecontents.jsp to monitor the cache contents. |
Cache Performance Tuning for Specific Problems
Confluence Cache Schemes
Performance Testing Scripts
Working with Confluence Logs
Operating Large or Mission-Critical Confluence Installations
Confluence Clustering Overview
Requesting Performance Support
Confluence Administrator's Guide
Confluence Configuration Guide