2012-06-18 23 views
5

memcachedが40%満杯になったときに退院しています。そんなことがあるものか?キャッシュが40%いっぱいになったときのMemcached退去

+0

どのようなシステムでmemcachedを使用していますか? memcachedには直接マップされたメモリの実装がありますか?私はなぜそれが...しかし誰が知っているかはわかりません。 – PinkElephantsOnParade

+0

Redhat Linux上で動作する4つのノードのクラスタがあります。直接マップされたメモリの実装が何を意味するかは不明です。しかし、memcachedをパッケージとして提供するmembaseを使用しています。 – apatel

+0

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

答えて

11

memcachedの統計情報を実行してスラブのサイズを確認します。スラブが均等に配置されていないように見え、キャッシュがいっぱいになっていなくてもスラブを引き起こしているようです。

+2

これはまさに私たちが持っていたケースです。デフォルトのバケツのスラブの1つがいっぱいであり、追い出しを引き起こしていました。ほぼ同じサイズのオブジェクトのためだけに新しいバケットを作成しましたが、この問題はもう発生しません。すべてのあなたの答えに感謝します。 – apatel

0

Memcachedは、異なるメモリチャンクのスラブに従ってデータを格納します。異なるメモリチャンクがすでに割り当てられている場合、他のメモリスラブにデータがない場合でも、最近使用された最小アルゴリズムがスラブ上で実行され、データが削除されます。

したがって、データサイズの大きな分布がこの問題の原因となります。 memcachedの複数のインスタンスを実行し、分散システムとして使用することで、問題を軽減できます。

2

これにも同様に適用されるthis questionの長い説明を書いています。

関連する問題