Cloud Memorystore Redis - высокая загрузка ЦП

Мы используем экземпляр Cloud Memorystore Redis, чтобы добавить уровень кэширования в наше критически важное приложение с выходом в Интернет. Общее количество вызовов (включая операции получения, установки и истечения срока действия ключа) к экземпляру Memorystore составляет около 10-15 КБ в секунду. Загрузка ЦП постоянно находится на уровне 75-80%, и ожидается, что загрузка будет еще выше.

В настоящее время мы используем уровень емкости M4 в рамках уровня обслуживания Standard.

https://cloud.google.com/memorystore/docs/redis/pricing

Требуется некоторая ясность в отношении следующих указателей.

  1. Какому количеству ядер ЦП соответствует уровень емкости M4?
  2. Неужели это действительно тревожно, когда загрузка ЦП превышает 100%? Ожидаем ли мы каких-либо заметных проблем с производительностью?
  3. Какие есть варианты решения проблем с производительностью (если таковые имеются), вызванных более высокой загрузкой ЦП (›= 100%)? Будет ли переход на уровень емкости M5 устранять высокую нагрузку на ЦП и соответствующие проблемы.

Наше приложение действительно сильно загружает процессор, и мы не видим никакого способа его дальнейшей оптимизации. С нетерпением жду полезных ссылок.


person Balajee Venkatesh    schedule 08.03.2021    source источник


Ответы (1)


Отвечая на ваши вопросы.

1. Какому количеству ядер ЦП соответствует уровень емкости M4?
Cloud Memorystore для Redis - это служба, управляемая Google, что означает, что Google может зарезервировать внутренние данные (ресурсы) виртуальной машины, на которой запущен сервис Redis. Тем не менее ожидается, что чем выше уровень емкости, тем больше ресурсов (ЦП) будет у виртуальной машины. В частности, для вашего случая добавление ЦП не решит проблем, связанных с использованием ЦП, потому что сама служба redis однопоточный.

Как видно из предыдущей ссылки:

Чтобы максимизировать использование ЦП, вы можете запустить несколько экземпляров Redis.
Если вы хотите использовать несколько ЦП, вы можете подумать о каком-либо способе сегментирования раньше.

2. Действительно ли опасно, что загрузка ЦП превышает 100%?
Да, высокая загрузка ЦП вызывает тревогу, потому что это может привести к ошибкам подключения или высокой задержке. Использование ЦП важно, но также и то, достаточно ли эффективен экземпляр Redis для поддержания вашей пропускной способности при заданной задержке. Вы можете проверить задержку redis с помощью команды redis-cli --latency, пока CPU% высок.

3. Ожидаем ли мы каких-либо заметных проблем с производительностью?
Это действительно сложно сказать или предсказать, потому что это зависит от нескольких факторов (клиентское обслуживание, выполнение команд в установленные сроки, рабочая нагрузка). Некоторые из наиболее распространенных причин высокой задержки и проблем с производительностью:

  • Клиентские виртуальные машины или службы перегружены и не используют сообщения от Redis: когда клиент открывает TCP-соединение для redis, сервер redis имеет буфер сообщений для отправки в это соединение. Если у клиентской службы полностью загружен ЦП, что не дает ядру времени на получение сообщений от Redis, они заполняются на сервере Redis.

  • Выполняемые команды потребляют много ресурсов ЦП. Известно, что следующие команды потенциально очень дороги в обработке:
    EVAL / EVALSHA
    KEYS
    LRANGE
    ZRANGE / ZREVRANGE

4.-Какие есть варианты решения проблем с производительностью (если таковые имеются), вызванных более высокой загрузкой ЦП (›= 100%)?
Этот вопрос в основном касается масштабируемого проекта вашей реализации. . Поскольку redis является однопоточным, лучшим подходом к снижению процента ЦП было бы сегментирование данных в нескольких экземплярах redis и наличие прокси перед ним для распределения нагрузки. Взгляните на график в разделе Twemproxy из этого ссылка.

5. - Решит ли переход на уровень емкости M5 высокую загрузку ЦП и соответствующие проблемы?
Переход на более высокий уровень емкости должен временно помочь с задержкой, но это называется вертикальным масштабированием, которое ограничен уровнями, которые предлагает Cloud Memorystore.

person Antonio Ramirez    schedule 26.03.2021