новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума
Алексей
Приватное сообщение
Новый заказчик

Оптимизация внешней компоненты 1С "RabbitMQ" на C/C++

Москва(Россия )
сегодня в 23:01:55 (менее чем 1 час назад)
Текст задания
Цель:
Требуется оптимизировать загрузку ЦП внешней компонентой 1С, реализованной на C/C++, и предназначенной для интеграции 1С и брокера сообщений "RabbitMQ".

Описание проблемы:
При вызове метода компоненты "Connect" наблюдается повышение загрузки ЦП на 25%, т.е. фактически не выполняя еще каких-либо операций с брокером ЦП уже на 1/4 чем-то занят.
Есть предположение, что при вызове этого метода в компоненте выполняется какой-то бесконечный цикл ожидания, который бесполезно сильно нагружает ЦП.

Возможные варианты решения:
Блокирующие циклы без sleep / условной ожидалки busy-wait и 100% CPU;
Фоновые таски «крутят» CPU при ожидании состояния/разрыве;
При разрыве соединения цикл продолжает без паузы — CPU 100%, сервер 1С «подвисает»;
Надо заменить busy-wait на event-driven (condition_variable / std::future / event loop) или как минимум вставить экспоненциальный backoff/sleep при ошибках.
В контексте AMQP-CPP — использовать callback-архитектуру (onConnected/onClosed) вместо постоянного опроса.

Проект компоненты:
Исходники: https://github.com/BITERP/PinkRabbitMQ
Тикет на оптимизацию: https://github.com/BITERP/PinkRabbitMQ/issues/105
0
Отклики (0)
Предложения отсутствуют
Чтобы добавить свое предложение, Вам необходимо авторизоваться либо зарегистрироваться.