Управление памятью в Managed Service for Redis
Для пользовательских данных на хостах кластера Managed Service for Redis выделяется 75% от общего объема оперативной памяти. Оставшаяся память резервируется для служебных нужд процесса Redis. Объем памяти, доступной для пользовательских данных, можно понизить с помощью параметра Maxmemory percent — это может быть полезно, если в кластере возникают ошибки Out of Memory.
Резервирование памяти на хосте позволяет:
- повысить производительность и стабильность процесса Redis;
- организовать стабильное создание резервных копий.
Повышение производительности и стабильности процесса Redis
На хостах кластера Managed Service for Redis используется настройка ядра Linuxvm.overcommit_memory = 0
. С помощью нее процесс Redis минимизирует количество обращений к файлу подкачки. Это повышает производительность и обеспечивает стабильную работу процесса Redis, в т. ч. при репликации и создании резервных копий.
Стабильное создание резервных копий
Резервные копии в Managed Service for Redis создаются на основе консистентного снимка памяти процесса. Снимок создается в результате копирования исходного процесса Redis с помощью системного вызова fork()
.
Использование fork()
снижает потребление RAM, т. к. исходный процесс Redis и его копия совместно используют одинаковые страницы памяти. Наличие резерва RAM и настройка vm.overcommit_memory = 0
делает использование fork()
более безопасным — создание копий не влияет на производительность основного процесса Redis.
При работе fork()
используется механизм Copy-on-Write
- выберите такое время начала резервного копирования, когда кластер наименее нагружен;
- увеличьте объем оперативной памяти, повысив класс хостов.