Вступить в клуб →
сложнаявопросPostgreSQL, ORM и кэш Redis

Истёк TTL горячего ключа — лавина запросов в базу

Главная страница отдаёт подборку, которая собирается тяжёлым запросом (около 800 мс) и кэшируется в Redis с TTL 5 минут. Трафик — 2000 RPS. Раз в пять минут графики показывают всплеск: CPU базы уходит в полку, p99 подскакивает до нескольких секунд, часть запросов отваливается по таймауту, потом всё нормализуется до следующего цикла.

Что происходит и как это лечится?

  • Redis блокируется при удалении ключа по TTL и на это время перестаёт отвечать клиентам; нужно несколько инстансов Redis
  • TTL слишком мал: если поставить сутки, всплески исчезнут, а данные всё равно обновятся при следующем деплое сервиса
  • В момент истечения ключа сотни запросов разом промахиваются и идут в базу за одним и тем же; пересчитывать должен один
  • Проблема в сериализации: `JSON.parse` больших объектов блокирует event loop и создаёт очередь необслуженных запросов

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

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

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

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