2012-06-18 5 views
5

Ich sehe Räumungen, wenn das Memcached nur zu 40% voll ist. Wie ist das möglich?Memcached Räumung, wenn der Cache zu 40% voll ist

+0

Hmmm Welches System verwenden Sie Memcached auf? Hat Memcached eine Direct-Mapped-Speicherimplementierung? Ich verstehe nicht, warum es ... aber wer weiß. – PinkElephantsOnParade

+0

Wir haben einen Cluster von 4 Knoten auf Redhat Linux. Nicht sicher, was Sie mit Direct-Mapped-Speicherimplementierung meinen. Aber wir verwenden Membase, die Memcached als Paket gibt. – apatel

+0

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

Antwort

11

Überprüfen Sie die Plattengrößen, indem Sie die Memcached-Statistik ausführen. Es sieht so aus, als wären Ihre Platten nicht gleichmäßig bestückt, und das führt zu Vertreibungen, selbst wenn der Cache nicht voll ist.

+2

Dies ist genau der Fall, den wir hatten. Eine der Platten im Standardbehälter war voll und verursachte die Zwangsräumungen. Wir haben einen neuen Bucket nur für fast gleich große Objekte erstellt und dieses Problem ist nicht mehr vorhanden. Vielen Dank für Ihre Antworten. – apatel

0

Memcached speichert Daten nach Blöcken verschiedener Speicherabschnitte. Wenn die verschiedenen Speicherblöcke bereits zugewiesen sind, dann läuft der zuletzt verwendete Algorithmus auf der Platte und räumt die Daten aus, selbst wenn in anderen Speicherbereichen keine Daten vorhanden sind.

Daher kann eine große Verteilung von Datengrößen für dieses Problem verantwortlich sein. Wenn mehrere Instanzen von memcached ausgeführt werden und es als verteiltes System verwendet wird, kann das Problem reduziert werden.

2

Ich schrieb eine lange Erklärung zu this question, die gleichermaßen für diese gelten würde.

Verwandte Themen