2012-06-18 10 views
5

Vedo sfratti quando la memcache è piena solo al 40%. Come è possibile?Evizione memorizzata quando la cache è piena al 40%

+0

Hmmm su quale sistema si sta utilizzando memcached? Memcached ha un'implementazione di memoria con mappatura diretta? Non vedo perché sarebbe ... ma chissà. – PinkElephantsOnParade

+0

Abbiamo un cluster di 4 nodi in esecuzione su Linux RedHat. Non sei sicuro di cosa intendessi per implementazione della memoria con mappatura diretta. Ma stiamo usando membase che fornisce memcached come pacchetto. – apatel

+0

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

risposta

11

Controllare le dimensioni della lastra eseguendo le statistiche memcached. Sembra che le tue lastre non siano popolate uniformemente e ciò causa gli sfratti anche quando la cache non è piena.

+2

Questo è esattamente il caso che abbiamo avuto. Una delle lastre nel secchio predefinito era piena e stava causando gli sfratti. Abbiamo creato un nuovo bucket solo per quegli oggetti di dimensioni quasi uguali e non abbiamo più questo problema. Grazie a tutti per le vostre risposte. – apatel

0

Memcached memorizza i dati in base alle lastre di diversi blocchi di memoria. Se i diversi blocchi di memoria sono già allocati, l'algoritmo meno utilizzato di recente viene eseguito sulla lastra ed espelle i dati, anche se non ci sono dati in altre lastre di memoria.

Pertanto una grande distribuzione di dimensioni dei dati può essere responsabile di questo problema. Avendo più istanze di memcached in esecuzione e utilizzandolo come un sistema distribuito, il problema può essere ridotto.

2

Ho scritto una lunga spiegazione allo this question che si applicherebbe ugualmente anche a questo.

Problemi correlati