Устранение неполадок с Кэшем Azure для Redis на стороне сервера
В этом разделе рассматривается устранение неполадок, вызванных условиями в Кэше Azure для Redis или на любой виртуальной машине, на которой он размещается.
- Высокая нагрузка на сервер
- Использование большого объема памяти
- Длительно выполняющиеся команды
- Ограничение пропускной способности на стороне сервера
Примечание.
Шаги по устранению проблем в этой статье также включают в себя указания по выполнению команд Redis и мониторингу различных метрик производительности. Дополнительные сведения и указания см. в разделе Дополнительные сведения.
Высокая нагрузка на сервер
Высокая нагрузка на сервер означает, что сервер Redis загружен и не может справиться с запросами, что приведет к истечению времени ожидания. Проверьте метрику Нагрузка сервера в кэше, выбрав в меню ресурсов слева пункт Мониторинг. Граф Нагрузка сервера отображается в рабочей области в разделе Аналитика. Также можно добавить набор метрик для Нагрузка сервера в разделе Метрики.
Ниже приведены некоторые параметры, которые следует учитывать при высокой нагрузке на сервер.
Увеличение или уменьшение масштаба
Масштабируйте для добавления дополнительных сегментов, чтобы нагрузка распространялась на несколько процессов Redis. Кроме того, можете рассмотреть возможность масштабирования до большего размера кэша с большим количеством ядер ЦП. Дополнительные сведения см. в статье с вопросами и ответами по планированию Кэша Azure для Redis.
Быстрые изменения количества клиентских подключений
Дополнительные сведения см. в разделе Предотвращение пиковых количеств подключений клиента.
Длительно выполняющиеся или ресурсоемкие команды
Этот раздел перемещен. Дополнительные сведения см. в разделе Длительно выполняющиеся команды.
Масштабирование
Операции масштабирования интенсивно используют ЦП и память, поскольку могут включать перемещение данных по узлам и изменение топологии кластера. Дополнительные сведения см. в статье Масштабирование.
обслуживание сервера;
Если произошел отказ Кэша Azure для Redis, все клиентские подключения с узла, который был остановлен, передаются на работающий узел. Нагрузка на сервер может резко подскочить из-за увеличения числа подключений. Вы можете попытаться перезапустить клиентские приложения, чтобы все клиентские подключения были созданы повторно и распределены между двумя узлами.
Использование большого объема памяти
Нехватка памяти на сервере может стать причиной всевозможных проблем с производительностью, которые вызывают задержку обработки запросов. При нехватке памяти система выгружает данные на диск, что приводит к значительному снижению производительности системы.
Нехватка памяти может возникнуть по следующим причинам:
- Кэш заполнен данными практически полностью.
- На сервере Redis наблюдается высокая степень фрагментации памяти.
Фрагментация, скорее всего, будет вызвана тем, что шаблон нагрузки хранит данные с высокой вариацией в размерах. Например, фрагментация может произойти, когда данные распределены по размеру 1 КБ и 1 МБ. Когда ключ размером 1 КБ удаляется из существующей памяти, то ключ размером 1 МБ не может вместиться в нее, вызывая фрагментацию. Аналогичным образом, если ключ размером 1 МБ удаляется и добавляется ключ размером 1,5 МБ, он не может вместиться в существующую освобожденную память. Это вызывает неиспользуемую, свободную память и приводит к большей фрагментации.
Если значение used_memory_rss
превышает показатель метрик used_memory
более чем в 1,5 раза, то память фрагментирована. Фрагментация может вызвать проблемы в следующих случаях:
- Использование памяти приближается к максимальному пределу памяти для кэша.
- Значение
UsedMemory_RSS
выше максимального предела памяти, что может привести к сбою страниц в памяти.
Если кэш фрагментирован и выполняется при высокой нехватке памяти, система выполняет отработку отказа для восстановления памяти резидентного набора (RSS).
Если выполнить команду INFO, которая помогает определить эту проблему, Redis предоставит два статистических показателя: used_memory
и used_memory_rss
. Эти метрики можно просмотреть на портале.
Убедитесь, что значения maxmemory-reserved
и maxfragmentationmemory-reserved
заданы соответствующим образом.
Настроить оптимальное использование памяти можно несколькими способами.
- Настройте политику памяти и параметры времени завершения срока действия ключей. Этой политики может быть недостаточно, если используется фрагментация.
- Настройте значение maxmemory-reserved , которого будет достаточно, чтобы компенсировать фрагментацию памяти.
- Создайте оповещения на таких метриках, как объем используемой памяти, чтобы заранее получать уведомления о возможных влияниях.
- Используйте масштабирование, чтобы увеличить размер кэша и объем памяти. Дополнительные сведения см. в статье с вопросами и ответами по планированию Кэша Azure для Redis.
Дополнительные сведения см. в статье Рекомендации по управлению памятью.
Долго выполняющиеся команды
Этот раздел перемещен. Дополнительные сведения см. в разделе Длительно выполняющиеся команды.
Ограничение пропускной способности на стороне сервера
Этот раздел перемещен. Дополнительные сведения см. в разделе Ограничение пропускной способности сети.