2012-06-18 53 views
5

当memcached只占满40%时,我看到驱逐。这怎么可能?当缓存占满40%时,Memcached驱逐

+0

嗯你使用memcached的系统是什么? memcached是否具有直接映射的内存实现?我不明白它为什么会......但谁知道。 – PinkElephantsOnParade

+0

我们有一个在Redhat linux上运行的4个节点的集群。不确定你的意思是直接映射内存的实现。但是我们正在使用membase,它将memcached作为一个包装。 – apatel

+0

http://stackoverflow.com/questions/6868256/memcached-eviction-prior-to-key-expiry/10456364#10456364 –

回答

11

通过运行memcached统计信息来检查板坯尺寸。看起来你的平板不是平均填充的,并且即使在高速缓存未满时也会导致驱逐。

+2

这正是我们的情况。默认桶中的一块板块已满,正在造成驱逐。我们为那些尺寸几乎相同的物体创建了一个新桶,我们不再有这个问题。谢谢你的回答。 – apatel

0

Memcached根据不同内存块的平板存储数据。如果已经分配了不同的内存块,那么即使在其他内存块中没有数据,最近最少使用的算法也会在板上运行并将数据逐出。

因此,数据大小的大分布可能导致此问题。 通过将多个memcached实例运行并用作分布式系统,可以减少问题。

2

我写了一个很长的解释this question这也适用于此。