Redis занимает слишком много памяти - PullRequest
0 голосов
/ 10 января 2019

Я установил дозорный кластер Redis (версия 4.0.6) в двух центов 6 ВМ. У главного и подчиненного сервера Redis maxmemory установлено значение 10 ГБ, а maxmemory_policy - volatile-lru.

Проблема в том, что оба сервера занимают много памяти.

Мастер

used_memory:8959732536
used_memory_human:8.34G
used_memory_rss:14763728896
used_memory_rss_human:13.75G
used_memory_peak:10002148536
used_memory_peak_human:9.32G
used_memory_peak_perc:89.58%
used_memory_overhead:1344839894
used_memory_startup:761776
used_memory_dataset:7614892642
used_memory_dataset_perc:85.00%
total_system_memory:20957556736
total_system_memory_human:19.52G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:10000000000
maxmemory_human:9.31G
maxmemory_policy:volatile-lru
mem_fragmentation_ratio:1.65
mem_allocator:jemalloc-3.6.0
active_defrag_running:0
lazyfree_pending_objects:0

Ведомый

used_memory:8927665872
used_memory_human:8.31G
used_memory_rss:16422535168
used_memory_rss_human:15.29G
used_memory_peak:10000009472
used_memory_peak_human:9.31G
used_memory_peak_perc:89.28%
used_memory_overhead:1340505548
used_memory_startup:761792
used_memory_dataset:7587160324
used_memory_dataset_perc:84.99%
total_system_memory:20957556736
total_system_memory_human:19.52G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:10000000000
maxmemory_human:9.31G
maxmemory_policy:volatile-lru
mem_fragmentation_ratio:1.84
mem_allocator:jemalloc-3.6.0
active_defrag_running:0
lazyfree_pending_objects:0

Redis занимает 14064,8 МБ и 15664,2 МБ на главном и подчиненном соответственно. У меня есть много данных, хранящихся в Redis. У большинства из них установлен срок действия, а у некоторых нет срока действия.

Проблема даже в том случае, если для максимальной памяти установлено значение 10 ГБ, почему в виртуальной машине redis занимает около 15 ГБ.

Я вижу, что используемая память меньше 10 ГБ, а rss-память 15 ГБ.

Я запустил MEMORY PURGE, которая очищает часть памяти rss, но она заполняется в течение нескольких минут и продолжает расти.

Любое предложение о том, как я могу контролировать потребление памяти или постоянное решение этой проблемы. Стоит ли увеличивать ОЗУ в ВМ? если да, сколько оперативной памяти я должен добавить, чтобы справиться с этой ситуацией.

1 Ответ

0 голосов
/ 10 января 2019

RSS-память всегда будет больше, чем фактическая память, используемая Redis для набора данных. Похоже, что в вашем случае вы также страдаете от фрагментации памяти, поэтому вам следует рассмотреть возможность включения активного дефрагментатора.

Тем не менее, выделение большего объема оперативной памяти вашим серверам позволит им достичь более высоких скоростей фрагментации, поэтому чем больше вы добавляете, тем больше времени требуется для достижения нагрузки на память. Поскольку фрагментация зависит от использования, трудно точно сказать, сколько еще вам понадобится, но в большинстве случаев плато фрагментации через некоторое время, так что это должно дать вам некоторое представление.

...