Неожиданная (?) высокая 'потраченная впустую' память в memcached

У меня есть он работа, но только если используемый клиент является RDP один запущенный Активным X а не Java Один - т.е. Вы использовали WebVPN от Internet Explorer, и имейте настройки безопасности, позволяющие Активный X

Я предполагаю, что это не влияет на версию Java, я никогда не получаю его работа, когда клиент Java загружается.

18
задан 19 June 2012 в 15:25
3 ответа

Прошел год с момента этого вопроса, и я не знаю, нашли ли вы свой ответ, но я собираюсь сказать, что ваше восприятие слова «впустую» неверно.

Потраченная впустую память выделяется в памяти, поэтому он не может использоваться другим приложением, но по-прежнему доступен для memcached.

Чтобы упростить объяснение, предположим, что у вас есть кэш памяти с 3 МБ оперативной памяти с 3 пластинами:

slab class  1: chunk size     10485 perslab      100
slab class  2: chunk size    104857 perslab       10
slab class  3: chunk size   1048576 perslab        1

Выполнить один " набор "размером 10к. Вы увидите в своей статистике (примерно), что у вас есть:

0.03% used
66.6% free
33% wasted

Это потому, что memcached выделил единственный фрагмент из «slab class 1», и 99% памяти для этого slab'а «потрачено впустую», а 1% «используется» «Это не означает, что slab и память, выделенная для этого slab, исчезли.

Выполнить еще один единственный« набор »размером 10k. На этот раз вы увидите:

0.06% used
66.6% free
32.7% wasted

Итак, теперь вы используете 2 из 100 выделенных блоков в слэбе 1, статистика «потраченных впустую» упала, а использованная статистика увеличилась.

Нет ничего плохого в том, что использованный% + потерянный% равен 100%. Это не означает, что у вас больше не осталось памяти, это просто означает, что вы выделили по крайней мере один кусок из каждой плиты.

Чтобы увидеть эту проблему, «набор» размером 100 КБ и еще один размером 1000 КБ

Теперь вы увидите

36.6% used
   0% free
63.3% wasted
10
ответ дан 2 December 2019 в 20:26

Вероятно, у вас очень большое количество очень маленьких объектов. Обычно самая маленькая плита содержит 104-байтовые записи. Если у вас есть много записей, которые просто сопоставляют одно целое число с другим, вы можете получить потери до 85%.

Вы можете найти информацию о том, как настроить это в статье Memcached для небольших объектов .

6
ответ дан 2 December 2019 в 20:26

I had this issue and moved from memcached to redis (without disk based saving). I know this might not be possible but you could try it as an option and keep an eye on the memory fragmentation. You could even turn persistence on to fix "old cache" issues on restart.

-1
ответ дан 2 December 2019 в 20:26

Теги

Похожие вопросы