Производительность
Медленная доставка сообщений
Симптом: сообщения отправляются, но получатель видит их с задержкой в несколько минут и более.
Проверить:
- Интервал запуска регламентного задания на стороне получателя — по умолчанию задание запускается раз в минуту; задержка может быть штатной.
- Число одновременных потоков обработки (
threads) в настройках подсистемы — если потоков мало, сообщения выстраиваются в очередь. - Очередь входящих сообщений не переполнена задачами с долгой обработкой, которые блокируют слоты.
Медленная отправка из 1С
Симптом: исходящий обработчик выполняется долго, очередь исходящих растёт.
Причины:
- Метод хранения «По ссылке» с тяжёлой сериализацией объекта в момент отправки.
- Большой объём сообщений в очереди при малом числе потоков отправки (
threads.out). - Сетевые задержки между 1С-сервером и DataHUB.
Действие:
- Увеличить
threads.outв форме настроек (осторожно — нагрузка на сервер 1С). - Убедиться, что исходящий обработчик не выполняет тяжёлых запросов при сериализации.
- Проверить сетевую задержку до DataHUB:
pingиtracerouteот сервера 1С.
Высокая нагрузка на RabbitMQ
Симптом: RabbitMQ Management показывает большой Publish rate или растущие очереди.
Причины:
- Большой объём исходящих сообщений за короткий промежуток (например, начальная загрузка данных).
- Inline-вложения в теле сообщения (Base64) сильно увеличивают размер — следует перейти на хранение файлов по ссылке (S3 presigned URL).
- ACK не отправляются вовремя — сообщения зависают в статусе Unacked и блокируют слоты.
Проверить количество Unacked в RabbitMQ Management → Queues → целевая очередь.
Высокая нагрузка на PostgreSQL
Симптом: DataHUB работает медленно, в логах длинные времена SQL-запросов.
Проверить:
-- Активные соединения
SELECT count(*) FROM pg_stat_activity WHERE state = 'active';
-- Самые долгие текущие запросы
SELECT pid, now() - query_start AS duration, query
FROM pg_stat_activity
WHERE state = 'active'
ORDER BY duration DESC
LIMIT 10;
Типичные действия:
- Убедиться, что
VACUUMвыполняется регулярно на таблицах с высоким update/delete. - При постоянно высоком числе соединений — рассмотреть PgBouncer.
Рекомендации по начальной загрузке данных
При первоначальной загрузке большого объёма данных в DataHUB (тысячи и более сообщений за сеанс):
- Разбить загрузку на порции по 100–500 сообщений с паузами между порциями.
- Отправлять порцию, дожидаться, пока получатель её обработает, затем отправлять следующую.
- Следить за очередями RabbitMQ: если
Readyрастёт быстро, снизить темп отправки. - Убедиться, что получатель успевает обрабатывать поступающий поток (статусы «Обработано» растут).