Как мы устранили критические замедления Битрикс24
Проблема:
При большом количестве бизнес-процессов с паузами и ожидающими событиями в Битрикс24 быстро накапливается очередь агентов на выполнение. Стандартный механизм обработки выполняет ограниченное количество агентов за один запуск. Если один из них выполняется длительное время, это может задерживать выполнение остальных задач и приводить к смещению сроков работы бизнес-процессов.
Решение:
Разработан механизм параллельной обработки очереди агентов. Несколько независимых процессов одновременно выбирают и выполняют задачи из общей очереди. Длительное выполнение одного агента не блокирует остальные, что позволяет поддерживать стабильную скорость обработки даже при высокой нагрузке.
Как работала система до внедрения
В Битрикс24 агенты представляют собой фоновые задания, которые обеспечивают выполнение бизнес-процессов, обработку пауз, ожидание событий и другие служебные операции. Они могут запускаться двумя способами: при обращении пользователей к порталу (на хитах) или по расписанию через cron.
При запуске на хитах выполнение агентов происходит одновременно с работой пользователя в интерфейсе. Если в очереди находится большое количество задач или отдельные агенты выполняются длительное время, это увеличивает время обработки запросов и приводит к замедлению работы портала.
При запуске через cron нагрузка переносится в фон, однако при высокой интенсивности автоматизации стандартный механизм не всегда успевает обработать накопившуюся очередь. Кроме того, длительно выполняющиеся агенты могут конкурировать за ресурсы и задерживать выполнение остальных задач.
В результате при большом количестве бизнес-процессов очередь постепенно увеличивалась, выполнение автоматизации начинало отставать, а паузы и ожидающие события срабатывали с задержками. Это ограничивало возможность масштабирования автоматизации на крупных корпоративных порталах.
Как работает система сейчас
Запускается несколько независимых обработчиков очереди. Каждый из них получает одного агента, выполняет его и сразу переходит к следующему.
Если один обработчик занят длительной задачей, остальные продолжают выполнять другие агенты. Благодаря этому очередь обрабатывается равномерно, а бизнес-процессы продолжают работать без накопления задержек.
Результат
Параллельная обработка агентов позволяет значительно повысить производительность Битрикс24 при высокой нагрузке, сократить время ожидания выполнения бизнес-процессов и обеспечить стабильную работу автоматизации без изменения существующей логики процессов.
Решение особенно эффективно для крупных корпоративных порталов с большим количеством одновременно работающих бизнес-процессов и отложенных задач.
Столкнулись с подобной задачей? Поможем решить!