Управление памятью для Azure Managed Redis

В этой статье мы обсудим эффективное управление памятью управляемого Azure кэша Redis.

Узнайте, как сообщается об использовании памяти

Метрика используемой памяти сообщает общую память, используемую базой данных, включая все сегменты. Если включена высокая доступность, эта метрика включает память, используемую как основными, так и сегментами реплик. Это означает, что указанное значение может быть примерно в два раза больше фактического набора данных.

Например, если вы храните 10 ГБ данных в кэше с поддержкой высокой доступности, метрика используемой памяти сообщает примерно 20 ГБ.

Метрика используемой памяти не включает фрагментацию памяти. Фактическое потребление физической памяти на сервере может быть выше из-за затрат на выделение. Дополнительные сведения о том, какие метрики включают, см. в справочнике по данным мониторинга.

Оценка памяти для планирования емкости

При планировании необходимой памяти следует учитывать эти факторы за пределами необработанного размера значений:

  • Затраты на каждый ключ: каждый ключ, хранящийся в Redis, включает в себя внутренние метаданные (указатели, информацию о типе, отслеживание срока действия). Эта нагрузка обычно составляет от 50 до 100 байт на ключ в зависимости от длины и типа значения ключа. Для большого количества небольших ключей эти затраты могут быть значительными.
  • Ключевые имена: память, используемая для хранения имен ключей, увеличивается в крупном масштабе. Более короткие имена ключей помогают сократить потребление памяти.
  • Отслеживание срока действия. Ключи с набором TTL используют дополнительную память для хранения срока действия.
  • Репликация высокого уровня доступности: с включенной высокой доступностью набор данных реплицируется. Метрика используемой памяти отражает использование как основной, так и реплицированной памяти, но ограничение по максимальной памяти SKU уже учитывает это. Вам не нужно выбирать более крупный номер SKU для размещения репликации— выберите номер SKU на основе фактического размера набора данных.

Чтобы проверить точную стоимость памяти определенного ключа, используйте команду Redis MEMORY USAGE :

MEMORY USAGE <your_key_name>

Эта команда возвращает общее количество байтов, потребляемых ключом, включая все внутренние издержки. Используйте это для проверки оценки памяти на ключ по фактическому использованию.

Политика вытеснения

Выберите политикувытеснения, которая работает для приложения. Политика Azure для управляемого Redis по умолчанию — volatile-lru, что означает, что вытеснению подлежат только ключи, для которых установлено значение TTL с помощью команды, например EXPIRE. Если ключи не имеют значения TTL, система не вытесняет никакие ключи. Если вы хотите, чтобы система разрешала вытеснение любого ключа в условиях дефицита памяти, рассмотрите эту политику allkeys-lru.

Срок действия ключей

Укажите значение срока действия для своих ключей. По истечении срока действия система удалит ключи заранее, не дожидаясь момента, пока не возникнет нехватка памяти. Когда удаление данных происходит по причине нехватки памяти, это может вызвать большую нагрузку на ваш сервер. Дополнительные сведения см. в документации по командам EXPIRE и EXPIREAT.

Наблюдение за использованием памяти

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

Добавьте оповещение о проценте используемой памяти, чтобы убедиться, что у вас не закончится память, и у вас будет возможность масштабировать кэш до возникновения проблем. Если процент используемой памяти постоянно превышает 75%, рассмотрите возможность увеличения памяти путем масштабирования до более высокого уровня. Сведения о уровнях см. в разделе "Архитектура".