Следует ли запускать блокировки Redis на отдельном экземпляре? - PullRequest
1 голос
/ 13 марта 2020

Мы используем:

  • Стандартный Redis на Azure
  • StackExchange.Redis
  • RedLock. net

Наш веб-сайт значительно вырос за последние год или два, и теперь, согласно Cloudflare, обслуживает ~ 250 000 000 некэшируемых запросов в месяц.

Спорадически мы видим пару сотен исключений в пакетах, связанных с RedLock, которые не в состоянии Получите блокировку, потому что она находится в состоянии Conflicted.

Наш кэш Redis обычно:

  • Работает при 10% загрузке сервера (я полагаю, это касается ЦП)
  • Но при почти 100% использовании памяти

Мои вопросы:

  • Рекомендуется ли использовать совершенно другой сервер Redis для блокировки?
  • Может ли использование 100% памяти на сервере Redis вызывать проблемы при создании блокировок?

1 Ответ

1 голос
/ 13 марта 2020

Когда вы смотрите на показатели производительности вашего кеша, совпадают ли сбои со 100% использованием памяти? Если так, держу пари, что это виновник.

Когда Redis достигает 100% памяти, может произойти сбой страницы, что замедляет запросы. См. Здесь для описания процесса. Я мог бы представить, где истекает ограничение в 5 мс Redlock. net для получения блокировки, когда давление памяти достигает 100% и запросы задерживаются.

Я бы раскрутил второй сервер Redis только для блокировки и посмотрел бы, облегчает ли это проблему, ИЛИ не увеличил бы существующий кеш. Посмотрите, если вы все еще испытываете проблему. Увеличение масштаба, вероятно, будет самым простым экспериментом без внесения изменений в ваш код.

...