Вступить в клуб →
сложнаявопросКэш, очереди и микросервисы

Одновременное истечение ключей кэша кладёт базу

Каталог товаров кэшируется в Redis с TTL 10 минут. Кэш прогревается при старте, поэтому у большинства ключей время жизни истекает почти одновременно. Нагрузка — около 1500 rps.

Каждые десять минут наблюдается одна и та же картина: всплеск времени ответа до нескольких секунд, скачок числа подключений к базе, часть запросов отваливается по таймауту. После прогрева всё нормализуется.

В чём причина и что делать?

  • Redis не выдерживает такую нагрузку — нужно масштабировать сам кэш, добавив реплики
  • Нужно вернуться на локальный IMemoryCache: тогда обращений по сети не будет, всплески исчезнут и база перестанет получать пиковую нагрузку
  • Это лавина промахов: помогают разброс TTL, ограничение одновременной перегенерации одного ключа и фоновое обновление до истечения
  • Нужно вернуться на локальный IMemoryCache: тогда обращений по сети не будет и всплески исчезнут

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела