Разбор инцидента с фоновыми задачами Hangfire показал, что за общей проблемой могут скрываться две независимые причины, каждая требующая собственной диагностики и исправления.
Ожидание в очереди и время выполнения — разные показатели
Массовые и обычные задания, конкурируя за одну очередь, привели к значительной длине очереди. При накоплении примерно 270 тысяч задач и скорости обработки около 50 задач в секунду только полный разбор очереди занимает порядка 5 400 секунд (примерно 90 минут). Такой расчёт объясняет масштаб ожидания в очереди, но не означает, что отдельная задача выполнялась всё это время: длительность ожидания в очереди и реальное время выполнения задачи нужно измерять по отдельности.
Разделение очередей и изменение стратегии обработки нагрузки — очевидные направления для снижения времени ожидания и предотвращения накопления задач в общей очереди.
Контекст логирования и рост памяти
Продолжающийся рост потребления памяти подтолкнул к анализу объектов кучи и областей логирования (LogContext). Накопление объектов оказалось связано с некорректным порядком завершения вложенных областей контекста. В системах, где свойства логирования управляются стеком областей, важно, чтобы более поздняя по времени открытая область завершалась раньше вложенной ранее; при нарушении этого порядка поведение может быть неопределённым и зависеть от реализации библиотеки и особенностей вызовов.
Исправление порядка завершения областей обычно устраняет утечки, связанные с накоплением контекстных свойств в памяти.
Выводы и рекомендации
- Измеряйте отдельно: время в очереди, собственно время выполнения задачи и использование памяти процесса.
- Для уменьшения времени ожидания рассматривайте разделение типов заданий по очередям и корректировку профиля потребления воркеров.
- Проверяйте корректность использования областей логирования: соблюдение порядка открытия/закрытия областей помогает избежать накопления объектов и утечек памяти.
- Исправление одного симптома не гарантирует полного решения, если за ним стоят независимые причины; требуется поэтапная диагностика и валидация изменений.



