3

我收到以下警告,但我不知道该怎么做。每次更新禁用 IP 时,大约有 80000 个条目将此警告写入 tomcat 中的 catalina.out 日志文件:

WARNING: Cache package.BannedIP Key package.BannedIP#73121 Lockable : null
A soft-locked cache entry was expired by the underlying Ehcache. If this happens regularly   you should consider increasing the cache timeouts and/or capacity limits
Dec 16, 2010 10:00:53 PM net.sf.ehcache.hibernate.strategy.AbstractReadWriteEhcacheAccessStrategy handleLockExpiry

ehcache.xml 文件中 BannedIP 的配置:

    <cache name="package.BannedIP"
       maxElementsInMemory="80000"
       eternal="true"
       overflowToDisk="true"
       diskPersistent="true" />

任何帮助将不胜感激。

4

2 回答 2

4

由于此警告,您是否遇到任何性能或可用性问题?如果不是,那么您似乎应该将此警告视为:警告。

否则,看起来解决方案是增加大小maxElementsInMemory以解决缓存内容与实际使用的内容之间的差异。

希望这可以帮助。

于 2011-01-02T03:28:47.793 回答
2

您是否确定 package.BannedIP 实际上包含您期望的内容?

您可以以编程方式使用统计信息来查看发生了什么。鉴于您在那里的配置位,Ehcache 永远不应该驱逐任何东西(只要您的 BannedIP 实例少于 80k)。

此外,要清楚该消息的含义:您正在更新 BannedIP 实例,但是,当提交发生时,Hibernate 为标记此条目而设置的 SoftLock 正在更新过程中,有由于某种原因被驱逐...我想知道为什么这些更新需要这么长时间?

另外,尽管我只是在大声思考,是否是其他一些过程(批量更新)使整个缓存区域无效?

于 2011-01-03T10:00:10.583 回答