2012-06-18 12 views
5

Widzę eksmisje, gdy memcached jest tylko w 40% zapełnione. Jak to możliwe?Wyrzucanie z pamięci, gdy pamięć podręczna jest w 40% pełna

+0

Hmmm jakiego systemu używasz memcached? Czy memcached ma implementację pamięci bezpośrednio odwzorowanej? Nie rozumiem, dlaczego ... ale kto wie. – PinkElephantsOnParade

+0

Mamy klaster 4 węzłów działających na Linuksie Redhat. Nie wiesz, co masz na myśli przez implementację pamięci bezpośrednio odwzorowanej. Ale używamy kodu, który daje memcached jako pakiet. – apatel

+0

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

Odpowiedz

11

Sprawdź rozmiary płytek, uruchamiając statystyki memcached. Wygląda na to, że twoje płyty nie są równomiernie zaludnione, co powoduje eksmisje, nawet jeśli pamięć podręczna nie jest pełna.

+2

Dokładnie tak było. Jedna z płyt w domyślnym wiadrze była pełna i powodowała eksmisje. Stworzyliśmy nową łyżkę tylko dla obiektów prawie tej samej wielkości i nie mamy już tego problemu. Dziękuję wszystkim za odpowiedzi. – apatel

0

Memcached przechowuje dane zgodnie z płytami różnych porcji pamięci. Jeśli różne porcje pamięci są już przydzielone, wówczas najmniejszy ostatnio używany algorytm działa na płycie i eksmituje dane, nawet jeśli nie ma danych w innych płytach pamięci.

Dlatego duża dystrybucja wielkości danych może być odpowiedzialna za ten problem. Dzięki wielu instancjom memcached uruchomionym i używaniu go jako systemu rozproszonego problem może zostać zredukowany.

2

Napisałem długie wyjaśnienie do this question, które dotyczyłoby również tego również.

Powiązane problemy