В нашем 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