【问题标题】:Why do my ATG repository item caches end up with usedRatios of well over 100%?为什么我的 ATG 存储库项目缓存的 usedRatios 超过 100%?
【发布时间】:2011-08-23 17:09:27
【问题描述】:

我正在运行 ATG 9,并在 repository.xml 中配置了一堆不同的对象,以具有特定的缓存大小、ttl 等。

例如:

<item-descriptor name="USER" 
    query-expire-timeout="300000"
    item-expire-timeout="300000"
    item-cache-timeout="300000" 
    item-cache-size="20000"
    query-cache-size="50">
...

我预计缓存不会超过该大小,并且会使旧项目过期以保持缓存大小等于或低于 item-cache-size。但是,当我查看 Dynamo 管理控制台中的缓存统计信息时,我看到我们的几个项目的 usedRatios 为 500-1000%。随着越来越多的项目被缓存并且显然从未释放,这会随着时间的推移占用 JVM 中的所有内存。如果我在管理控制台中调用 Repository 上的 invalidateCaches 方法,则可用内存会向上跳回,然后缓慢的下降再次开始。

如何确保缓存不会增长超过其配置的大小并占用所有内存?我缺少一些配置设置吗?是否必须采用一些代码技巧来防止缓存失控? ATG 文档不是信息量最大的,谷歌搜索也没有得到太多信息。

【问题讨论】:

  • USER 的情况在这里重要吗?您是否尝试过更改缓存模式?
  • 相信你还必须在xml文件的顶部指定xml-combine。类似于&lt;gsa-template xml-combine="append"&gt;

标签: caching repository atg


【解决方案1】:

启动 ATG 实例后,我建议导航到 Dynamo 管理页面 (/dyn/admin/nucleus/atg/userprofiling/ProfileAdapterRepository/?propertyName=definitionFiles) 中的 ProfileAdapterRepository 并查看存储库定义文件的组合视图。这是确定最终文件外观的最佳方式,因为它可以由许多文件组成。

您应该通过此界面看到您在“用户”存储库项上配置的属性(注意全部小写)。

如果您在这里没有看到您的属性,那么您可能没有加载您的存储库定义文件,或者您正在处理的模块没有启动,或者该文件不在配置路径上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-11
    • 2012-04-04
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多