Как происходит обработка запроса

1) Битрикс доходит до блока RestActivity



2) Ваш Битрикс (коробочный или облачный) отправляет данные о действии специальном серверу Битрикса (Bitrix Communication Server)


3) Bitrix24 Webhook Engine (Bitrix Communication Server) стучится в сервер RestActivity и сообщает, что есть новое задание

выглядит в nginx 

89.208.230.2 - - [09/Mar/2021:07:10:04 +0300] "POST /bp_rest/robot/get_string/ HTTP/1.1" 200 6 "-" "Bitrix24 Webhook Engine"

195.208.184.200 - - [09/Mar/2021:07:10:08 +0300] "POST /bp_rest/get_string/ HTTP/1.1" 200 6 "-" "Bitrix24 Webhook Engine"

195.208.184.200 - - [09/Mar/2021:07:10:48 +0300] "POST /bp_rest/robot/get_string/ HTTP/1.1" 200 6 "-" "Bitrix24 Webhook Engine"



4) Наш сервер кладет данные о запросе в Базу Данных и в отдельном потоке делает рест вызов к вашему Битриксу bizproc.activity.log "Запрос поставлен в очередь"


5) В зависимости от приоритета (Платный, Нормальный, Пониженный (для тех, кто захламляет запросами) берутся из очереди эти запросы и начинают обрабатываться

6) В этот момент происходит до 10 (уточнить число) и до бесконечности при "списочных методах" запросов 

- записи в лог bizproc.activity.log

- отладочные запросы im.notify

- сам запрос например (crm.lead.list) их может быть много в случае списочного метода


7) Когда результат от основного запроса получен, вызывается метод bizproc.event.send



Вывод: для выполнения одного запроса необходимо выполнить много rest запросов, и если получается больше 100 запросов в минуту, то битрикс начинает не пропускать запросы, что приводит к накоплению очереди.

Как улучшить: 1) убрать отладку, 2) можем убрать логирование (bizproc.activity.log) по запросу