中文标题【缓存性能优化】
缓存性能示例
有关 Confluence 的缓存性能如何设置,让我们看看下面的表:
缓存(Caches) | % 使用的缓存(Used) | % 有效率(Effectiveness) | 对象/大小(Objects/Size) | 命中/未命中/过期(Hit/Miss/Expiry) |
---|---|---|---|---|
附件(Attachments) | 87% | 29% | 874/1000 | 78226/189715/187530 |
内容附件(Content Attachments) | 29% | 9% | 292/1000 | 4289/41012/20569 |
内容正文(Content Bodies) | 98% | 81% | 987/1000 | 28717/6671/5522 |
内容标签映射(Content Label Mappings) | 29% | 20% | 294/1000 | 4693/18185/9150 |
数据库查询(Database Queries) | 96% | 54% | 968/1000 | 105949/86889/83334 |
对象属性(Object Properties) | 27% | 18% | 279/1000 | 5746/25386/8102 |
页面评论(Page Comments) | 26% | 11% | 261/1000 | 2304/17178/8606 |
用户(Users) | 98% | 5% | 982/1000 | 6561/115330/114279 |
缓存大小最大的数量是 1000(意思是缓存可以包含有 1000 个对象)。在必要的时候你可以增加这个值的大小,当下面 2 个条件都满足的时候:
- 搞使用率(超过 75%)
- 低有效率。
检查有效率(effectiveness)中的使用的百分比。一个缓存如果是有滴的百分比的使用率并不意味着缓存的大小少,系统将不会使用内存直到缓存被用完。
有关附件(Attachments),数据库查询(Database Queries)和用户(Users)应该增加来提高缓存的有效率。
当存储的信息变老并且不再需要使用的时候,这部分内容将会在缓存中因为过期而删除。缓存过期是基于缓存使用的频率来定义的。
当缓存同时具有低使用率和低有效率的时候,你也没有太多可以操作的的空间。随着时间的变化,更多的对象缓存进来后,可能会导致缓存有效率数据的提升。
找到配置文件
缓存的配置文件是存储在 <confluence-home>/shared-home/config/cache-settings-overrides.properties
中的。
有关 Confluence 数据中心(集群)中缓存的配置,你可以在 <confluence-shared-home>/config/cache-settings-overrides.properties
文件中找到(这个是针对集群分享的 home 目录)。
缓存键(key)映射
缓存配置文件是通过他们的 key 进行配置的。希望找到缓存配置文件的 可以,在缓存管理界面(Cache Management)使用鼠标移动到缓存的名字,在弹出窗口中你就可以看到缓存的 key 了。
Confluence 数据中心的缓存
在 Confluence 数据中心(集群)你需要分布缓存和每一个节点的缓存。在集群管理界面,将会定义分布缓存和节点本地缓存。
缓存配置文件存储在集群共享目录中的 home 目录下面。
重要缓存
下面的建议是基本上的一些配置帮助。在大型数据库中,20-30% 的数据库表大型可能是不需要如此膨胀的。在缓存配置的界面中,检查有效率和使用率的配置来进行必要的修改。
- 内容对象缓存(Content Objects cache) (
com.atlassian.confluence.core.ContentEntityObject
)
应该设置为最少 20-30% 在整体对象的比例中(页面,内存,电子邮件,新内容)。希望找到内容的总的数量,你可以使用查询select count(*) from CONTENT where prevver is null。
- 内容主体映射缓存(Content Body Mappings cache) (
com.atlassian.confluence.core.ContentEntityObject.bodyContents
应该设置为最少 20% 在整体对象的比例中(页面,内存,电子邮件,新内容)。 希望找到内容的总的数量,你可以使用查询)
select count(*) from CONTENT where prevver is null。
嵌入的 Crowd 内部 用户缓存(Embedded Crowd Internal User cache) (
com.atlassian.crowd.model.user.InternalUser
)
应该设置为你系统中内部目录中所有用户的数量。你可以通过下面的 SQL 来找到你系统中当前用户的数量:SELECT COUNT(*) FROM cwd_user u JOIN cwd_directory d ON u.directory_id = d.id AND d.directory_name = 'Confluence Internal Directory';
嵌入 Crowd 用户缓存(Embedded Crowd Users cache)(
com.atlassian.confluence.user.crowd.CachedCrowdUserDao.USER_CACHE
)
应该设置与 cwd_user 表中的数量一致。SELECT COUNT(*) FROM cwd_user u;
- 通过 ID 的空间权限缓存(Space permissions by ID cache) (
com.atlassian.confluence.security.SpacePermission
)
应该设置与你部署的空间权限数量设置一致(一个好的配置为,设置大小为你空间数量的 20 倍)。你可以通过下面的 SQL 找到空间权限的数量select count(*) from SPACEPERMISSIONS。
监控缓存中的内容
要查看缓存中有什么内容:
- 使用你的浏览器进入 <
confluence-URL>/admin/cachecontents.jsp
所有缓存中包含的主题将会显示出来。 - 从列表中选择一个缓存。