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

Почему memcached занимает намного больше памяти, чем указано в его конфигурации

Я установил размер элемента на 128 МБ и максимальную память на 1024 МБ в моей конфигурации memcached. Но когда я запускаю эту команду:

ps -eo pmem,pcpu,vsize,pid,cmd | sort -k 1 -nr | head -5

я получил

71.7  0.0 3072592 4537 /usr/bin/memcached -vv -m 1024 -p 11211 -u memcache -l 0.0.0.0 -I 128M

Это означает, что memcached занимает 3 ГБ памяти. Теперь я понимаю, что когда мы устанавливаем размер элемента больше 1 МБ, потребление памяти memcached увеличивается. Но 3 ГБ, когда вы установили Максимальный объем памяти на 1 ГБ, кажется довольно много.

Всегда так или я что-то не так делаю? Есть ли способ уменьшить это потребление памяти?

Примечание: хотя ключи, которые я в настоящее время храню в memcached, или чуть больше 1 МБ, но размер этих ключей постоянно увеличивается, поэтому для безопасности в будущем я установил размер элемента на максимально возможный!

vsize делает не означают, сколько памяти занимает процесс. Это число дается rss.

Размер резидента, или rss, указывает, сколько памяти фактически использует процесс. Хотя общий размер ВМ, здесь vsize, указывает сколько всего адресного пространства используется. Программа теоретически может в конечном итоге использовать такой объем оперативной памяти, но большая часть адресного пространства используется такими вещами, как выделенная, но не используемая память, части библиотек, которые не были загружены с диска, потому что они не нужны, и т. Д.

На практике вы можете игнорировать vsize если только вы не используете 32-разрядную систему, в которой максимально возможное адресное пространство для любого процесса составляет 4 ГБ (даже если процесс использует гораздо меньший объем ОЗУ).