2

使用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,项目永不过期。

为什么会这样?

4

2 回答 2

4

我想我找到了原因。

前段时间我将ehcache从1.6.xx升级到1.7.xx。我没有注意到他们改变了驱逐算法的实现。现在它的工作原理如下:选择随机 15 个键(!,它们使用一些启发式方法,但仍然是随机的),然后找到相应的元素,从选定的元素中选择最近使用的元素。MemoryStore(你可以在看课后自己弄清楚)。在那之后,它的工作非常非常糟糕也就不足为奇了。

好消息是您可以通过设置属性“net.sf.ehcache.use.classic.lru”=true 来使用旧实现。在我这样做之后,我的问题就消失了

于 2010-02-25T21:33:07.233 回答
1

您可能会查看其他Cache Eviction Algorithms。另请参阅缓存替换策略

于 2010-02-22T13:08:53.750 回答