Перейти к содержанию

Производительность и тюнинг

Разделение ответственности, рычаги настройки и точки измерения пропускной способности.

Эталонных публичных замеров у проекта нет: пропускная способность сильно зависит от профиля сообщений (размер, частота), оборудования и настроек Kafka. Поэтому страница даёт методику: какие рычаги существуют и как измерить эффект каждого в вашем контуре. Если вы готовы поделиться замерами из продуктивного внедрения — откройте issue.

Архитектурные рычаги

Пропускная способность адаптера упирается в три фактора:

  1. Регистрация в очереди — скорость записи в РегистрСведений.кфкИсходящиеСообщения при срабатывании подписок.
  2. Обработка очереди — скорость сериализации и отправки брокеру (исходящие) либо чтения и десериализации (входящие).
  3. Сеть и брокер — latency до Kafka, размер батча, настройки acks.

Параметры диспетчера

Основные рычаги настраиваются в диспетчерах задач продюсера / консьюмера (Фоновые и регламентные задания).

Параметр Эффект Когда увеличивать
Подпотоки обработки Параллельность сериализации/десериализации Рост очереди при CPU idle на сервере 1С
Подпотоки транспорта Параллельность отправки в брокер Медленная сеть до брокера, высокий latency Kafka
Потоковый режим Непрерывная работа без пауз между итерациями регламентного задания Постоянный поток сообщений

Дополнительные рычаги

  • Разделение топиков — разные темы под разные скорости обмена.
  • Пакетный режим регистрации — передача массива в ПоместитьВОчередьИсходящих() вместо поэлементной регистрации.

Точки измерения

Чтобы понимать, какой рычаг двигать, измеряйте:

  1. Лаг регистрации — интервал между изменением объекта и появлением записи в очереди.
  2. Лаг отправки — время от записи в очередь до статуса «Отправлено».
  3. Лаг доставки в потребителя — end-to-end: от записи в 1С-отправителе до записи в 1С-получателе.
  4. Throughput — сообщений/сек по топику (брать из кода мониторинга Kafka или из кфкИсходящиеСообщения за период).

Дашборды — через внешнее логирование в ELK/Loki. Базовые запросы — мониторинг.

Как провести замер у себя

Чтобы решения о тюнинге опирались на данные, а не на ощущения, зафиксируйте профиль и измерьте базовую линию до изменения параметров:

  1. Профиль нагрузки — типичный размер тела сообщения, частота регистрации (сообщений/мин), число партиций топика и replication factor.
  2. Базовая линия — лаги и throughput из раздела Точки измерения при текущих настройках, на интервале не короче часа рабочей нагрузки.
  3. Изменение одного параметра — меняйте по одному рычагу за итерацию (подпотоки обработки → подпотоки транспорта → потоковый режим) и сравнивайте с базовой линией.
  4. Контроль стоимости — вместе с лагами следите за CPU/RAM сервера 1С и числом фоновых заданий: рост параллелизма не бесплатен.

Типовые проблемы производительности

  • Очередь постоянно растёт.
  • Медленная сериализация в обработчике продюсера — профилировать и выносить тяжёлые выборки за пределы обработчика.
  • Частые блокировки на регистре исходящих — рассматривать разделение на несколько регистров/топиков.

Смотрите также