Как уменьшить mem_fragmentation_ratio в Redis? - PullRequest
1 голос
/ 28 июня 2019

По команде info я получаю

mem_fragmentation_ratio:1.24

, что больше 1.

Я знаю, это означает, что redis хранит некоторую свободную память, которую можно освободить

Как я могу освободить эту память и уменьшить это соотношение?

Я пробовал MEMORY PURGE, но соотношение не меняется.

redis_version:4.0.9

# Memory
used_memory:8347302992
used_memory_human:7.77G
used_memory_rss:9236336640
used_memory_rss_human:8.60G
used_memory_peak:17919661152
used_memory_peak_human:16.69G
used_memory_peak_perc:46.58%
used_memory_overhead:519883816
used_memory_startup:1215600
used_memory_dataset:7827419176
used_memory_dataset_perc:93.79%
total_system_memory:270383198208
total_system_memory_human:251.81G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:21474836480
maxmemory_human:20.00G
maxmemory_policy:noeviction
mem_fragmentation_ratio:1.11
mem_allocator:jemalloc-4.0.3
active_defrag_running:0
lazyfree_pending_objects:0

1 Ответ

1 голос
/ 28 июня 2019

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

Для ясности, команда MEMORY PURGE работает только с распределителем памяти jemalloc:

Команда MEMORY PURGE пытается очистить грязные страницы, чтобы они могли быть восстановлены распределителем.

Эта команда в настоящее время реализована только при использовании jemalloc в качестве распределителя и оценивается как доброкачественный NOOP для всех остальных.

Итак, если вы используете Redis на Windows или Mac, вы, вероятно, не можете использовать MEMORY PURGE.

В целом, я бы не стал беспокоиться о степени фрагментации, которая так близка к 1. Проблемы обычно возникают только тогда, когда коэффициент фрагментации падает ниже 1 или намного выше 1 (например, 10 или более).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...