Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описаны рекомендации по управлению памятью в кэше Azure для Redis.
Выбор правильной политики вытеснения
Выберите политику вытеснения, которая работает для приложения. Политика по умолчанию для Кэша Azure для Redis — это volatile-lru
, что означает: только ключи, имеющие установленное время жизни (TTL), заданное с помощью команды, например, EXPIRE, имеют право на вытеснение. Если ключи не имеют значения TTL, система не вытесняет никакие ключи. Если вы хотите, чтобы система разрешала вытеснение любого ключа при нехватке памяти, используйте allkeys-lru
политику.
Установка даты окончания срока действия ключей
Вытеснение из-за нехватки памяти может привести к большей нагрузке на ваш сервер. Задайте значение истечения срока действия ключей, чтобы удалить ключи заранее, а не ожидать, пока не будет давление на память. Дополнительные сведения см. в документации по командам Redis EXPIRE и EXPIREAT.
Минимизация фрагментации памяти
Большие значения ключей могут привести к фрагментации памяти при вытеснении и вызвать высокое использование памяти и нагрузку на сервер.
Наблюдение за использованием памяти
Отслеживайте использование памяти , чтобы убедиться, что не хватает памяти. Создайте оповещения , чтобы обеспечить возможность масштабирования кэша до возникновения проблем.
Настройте параметр maxmemory-reserved
Настройте параметры maxmemory-reserved , чтобы максимально повысить скорость реагирования системы. Достаточно параметров резервирования особенно важно для рабочих нагрузок с высокой нагрузкой на запись или при хранении значений 100 КБ или более в кэше.
Этот параметр
maxmemory-reserved
настраивает объем памяти в МБ, зарезервированный на экземпляр в кластере, для некэшированных операций, таких как репликация при отказе. Установка этого значения обеспечивает более согласованную работу сервера Redis при изменении нагрузки.Параметр
maxfragmentationmemory-reserved
настраивает объем памяти в МБ на экземпляр в кластере, зарезервированный для учета фрагментации памяти. При установке этого значения сервер Redis будет более согласованным в моменты, когда кэш заполнен или почти заполнен, а коэффициент фрагментации высок.
Если память зарезервирована для этих операций, она недоступна для хранения кэшированных данных. По умолчанию при создании кэша примерно 10% доступной памяти зарезервировано для maxmemory-reserved
, и еще 10% зарезервировано для maxfragmentationmemory-reserved
. Вы можете увеличить зарезервированные суммы, если у вас есть нагрузки с интенсивными записями.
Допустимые диапазоны для maxmemory-reserved
и для maxfragmentationmemory-reserved
составляют от 10%до 60% для maxmemory
. Если вы попытаетесь установить эти значения ниже 10 % или выше 60 %, они будут пересмотрены и возвращены к значениям минимум 10 % и максимум 60 %.
При масштабировании кэша параметры maxmemory-reserved
и maxfragmentationmemory-reserved
автоматически масштабируются пропорционально размеру кэша. Например, если maxmemory-reserved
задано значение 3 ГБ в кэше размером 6 ГБ, и вы масштабируете его до 12 ГБ, параметр автоматически обновляется до 6 ГБ во время масштабирования. При уменьшении масштаба происходит обратный процесс.
Рассмотрите, как изменение значения резервирования памяти maxmemory-reserved
или maxfragmentationmemory-reserved
может повлиять на кэш, в котором уже хранится большой объем данных. Например, если у вас есть кэш объемом 53 ГБ, а зарезервированные значения установлены на минимум 10%, максимальный объем доступной памяти для системы составляет примерно 42 ГБ. Если текущее значение used_memory
или used_memory_rss
превышает 42 ГБ, система должна вытеснить данные до тех пор, пока и used_memory
, и used_memory_rss
не станут меньше 42 ГБ.
Вытеснение может увеличить нагрузку на сервер и фрагментацию памяти. Дополнительные сведения о метриках кэша, таких как used_memory
и used_memory_rss
, см. в разделе Создание собственных метрик.
Примечание.
При программном масштабировании кэша с помощью Azure PowerShell, Azure CLI или REST API все включенные maxmemory-reserved
или maxfragmentationmemory-reserved
параметры игнорируются в рамках запроса на обновление. Учитывается только изменение масштабирования. После завершения операции масштабирования можно обновить параметры памяти.