2012-06-18 100 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這也適用於此。