かなり大規模 (20 GB) で、非常にアクティブな (ヒット率 > 92%) Memcache クラスターを使用しており、10% 以上の無駄なスペースが見られます。
エビクション率は非常に低く (0.1/秒)、再利用率は一定 - 0 です。
これは懸念の原因であり、現在のように使用可能なスペースを消費しないようにするために、定期的にでも実行できることはありますか?
私は最近、memcached クラスターのスペース使用量の分析を行いましたが、これはそのサイズの約 2 倍です。
さまざまなサイズのスラブに空のチャックがあり、単に満たされていない場合、memcached には通常「無駄な」スペースがあることがわかりました。
これは、1.4.11 未満の memcached でのスラブ割り当てが静的であり、特定のスラブ サイズのメモリが同じサイズのスラブからのみ (割り当てられると) 削除されるという事実の副作用のようです。
http://code.google.com/p/memcached/wiki/ReleaseNotes1411
1.4.11 の時点で、スラブ再割り当ての機能が導入されました。これは、LRU が必要なスラブ クラスで使用するために、他のスラブ クラスからオブジェクトを削除できるようにするためのものと思われます。
エビクション レートが、メモリが常にエビクトされ、異なるスラブ クラスとの間で再割り当てされるような速度だった場合、どうなるかわかりません。
ただし、立ち退き率が低いことを考えると、他の場所でパフォーマンスの問題が発生していない限り、あまり心配する必要はありません。
うまくいけば、それは役に立ちます。