【问题标题】:Ehache Big Cache Elements Not ExpiringEhcache Bigg 缓存元素未过期
【发布时间】:2014-06-19 14:24:57
【问题描述】:

我在缓存中设置了 timeToIdle 和 timeToLive 属性。它们分别设置为 10 分钟和 1 小时。

每 5 分钟,我有一个 cron 作业调用 getKeysWithExpiryCheck() 对缓存中的元素进行一些处理。我还注册了一个缓存侦听器,以便在元素过期或被驱逐时执行一个进程。

我发现只有在缓存变满时才会从缓存中删除元素——尽管调用了getKeysWithExpiryCheck。因为我使用的是 Terrocota 大内存缓存 (4.0.4),所以这总是会锁定我的系统,因为缓存会过期(并执行一个处理)数百万个应该在 TTL 或 TTI 的 5 分钟内处理的条目。

有人有什么建议吗?

【问题讨论】:

    标签: java ehcache ehcache-bigmemory


    【解决方案1】:

    您是正确的,元素在过期并且被访问之前不会被驱逐。看看Documentation 怎么说:

    如果条目过期但未被访问,并且没有资源限制强制驱逐,则过期条目保留在原地。

    不幸的是,调用 getKeysWithExpiryCheck() 只会返回尚未过期的密钥,它不会强制驱逐过期的元素。仍然在这种情况下,一次被驱逐的大量元素不应该锁定您的系统。当系统锁定时,您是否进行过线程转储或查看 GC 日志以验证是什么导致一切变慢?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-16
      • 2013-04-23
      • 1970-01-01
      • 2014-09-09
      • 2016-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多