使用Ehcache ,在Java应用程序工作2.5天后,我有了这个统计信息
cacheHits: 31185262, approximate 131 per sec
cacheMisses: 4642979, approximate 19 per sec
evictedCount: 4106931, approximate 17 per sec
和最后一小时看起来像是
cacheHits: 60 per sec
cacheMisses: 57 per sec
evictedCount: 53 per sec
缓存大小= 400000,项目永不过期。
为什么会这样?
答案 0 :(得分:4)
我想我找到了原因。
前段时间我将ehcache从1.6.xx升级到1.7.xx.我没有注意到他们改变了驱逐算法的实现。现在它的工作原理如下:选择随机的15个键(!,它们使用一些启发式算法,但它仍然是随机的),然后找到相应的元素,从选定的元素中选择最近最近使用的元素。 (你可以在看MemoryStore
课后自己弄清楚)。之后,这并不奇怪,它的工作非常糟糕。
好消息是你可以通过设置属性“net.sf.ehcache.use.classic.lru”= true来使用旧的实现。在我这样做后,我的问题消失了
答案 1 :(得分:1)
您可以查看其他Cache Eviction Algorithms。另请参阅Cache replacement policies。