Назад | Перейти на главную страницу

Почему memcached не использует доступную память?

В нашем memcached.conf есть следующая директива:

-m 7168

А на сервере 8 ГБ ОЗУ. Однако, несмотря на интенсивное использование, использование памяти никогда не превышает 2 ГБ:

# free
             total       used       free     shared    buffers     cached
Mem:       8178532    2067308    6111224          0     109092     434916
-/+ buffers/cache:    1523300    6655232
Swap:            0          0          0

Что нам не хватает?

Обычно memcached использует ровно столько памяти, сколько нужно, даже если вы указываете максимальный предел. Это не похоже на системные буферы Linux, которые по замыслу могут расширяться, чтобы заполнить всю доступную память для повышения производительности системы.

Вы можете подключиться к своему кэшу памяти через Telnet и ввести команды

stats
stats slabs
stats malloc

что должно дать вам представление о том, сколько объектов какого размера находится в вашем кэше памяти и сколько памяти они занимают.

Если у memcached недостаточно памяти для хранения всех ваших объектов, он вытеснит старые объекты, что увеличит счетчик «выселений», возвращаемый slabs. Если значение «выселения» равно 0, значит, в вашем кэше памяти достаточно памяти.

Вы можете найти много других полезных команд и решений в «шпаргалке по memcached» по адресу http://lzone.de/cheat-sheet/memcached