Вступить в клуб →
сложнаявопросasync/await, многопоточность и фоновые задачи

Очередь задач в памяти на ConcurrentQueue раздулась до нескольких гигабайт

API принимает события аналитики и складывает их в ConcurrentQueue, а BackgroundService пишет их в ClickHouse. Во время маркетинговой акции события приходили быстрее, чем уходили в базу. Память процесса выросла до лимита, и под перезапустился, потеряв всю очередь.

Как устроить приём событий устойчивее?

  • Ограниченный Channel с политикой при переполнении
  • Увеличить лимит памяти пода вдвое
  • Запускать больше экземпляров BackgroundService в одном процессе
  • Заменить ConcurrentQueue на List с lock

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

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

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

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