我收到了警告,我不知道该怎么做。每当bannedIPs更新时,大约有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" />
任何帮助将不胜感激。
答案 0 :(得分:3)
您是否因此警告而遇到任何性能或可用性问题?如果没有,那么您似乎应该将此警告视为:警告。
否则,解决方案似乎是增加maxElementsInMemory
的大小以解释缓存内容与实际使用内容之间的差异。
希望这有帮助。
答案 1 :(得分:2)
您是否确定package.BannedIP实际上包含您的期望?
您可以通过编程方式使用统计信息来查看正在发生的事情。鉴于你在那里的配置位,Ehcache应该永远不会驱逐任何东西(只要你的BannedIP实例少于80k)。
此外,要明确该消息的含义:您正在更新BannedIP实例,但是,当提交发生时,Hibernate已经为实现此条目而设置的SoftLock正在进行中更新,由于某种原因被驱逐......我想知道为什么这些更新需要这么长时间?
另外,虽然我只是大声思考,但是其他进程(批量更新)是否会使整个缓存区域无效?