Настройка параметров очереди обмена данными

Параметры для настройки очереди обмена данными расположены в секции ExchangeQueue в конфигурационном файле Оркестратора.

ПараметрНазначениеПримечание

StatisticAvgWindow

Ширина окна сбора средних (сек)

StatisticAvgWindowPreCount

Запас создания окон

Внутренний системный параметр для оптимизации. Не рекомендуется менять

StatisticAvgLastWindowsCount

Количество последних окон, которое отдается в запросе

StatisticRecalcInterval

Интервал (мсек) пересчета статистики

StatisticBatchSize

Размер пачки, вычитываемой за раз из очереди событий статистики

События, связанные со статистикой очередей обмена данными (круговая диаграмма в таблице с очередями), регистрируются в реальном времени во внутренней очереди Оркестратора. Обработка этой очереди происходит с периодичностью StatisticRecalcInterval. За одну итерацию из очереди считывается пачка событий размером StatisticBatchSize, на основе которой пересчитывается статистика.

Среднее время обработки элемента очереди (разность дат события прочтения элемента и b и последнего события завершения обработки элемента) считается по окну StatisticAvgWindow. Например, раз в 2 минуты. Окна создаются с запасом StatisticAvgWindowPreCount при заполнении очередного множества окон. Запрос для построения графика в UI отдаёт последние заполненные окна в размере StatisticAvgLastWindowsCount.

Оптимизация чтения из очереди по FIFO

Параметры для оптимизации чтения из очереди по FIFO приведены ниже.

ПараметрНазначениеПримечание

FIFOLocked

Реакция на блокировку (только для Postgres) при извлечении по FIFO. Если задана в настройке очереди, аналогичный параметр берется из БД для очереди

0 – Пропускаем заблокированные, если все заблокированы - вернется пусто

1 – Пропускаем заблокированные, если все заблокированы - будет ошибка

FIFORetry

Количество ретраев при извлечении по FIFO при FIFOLocked = 1. Если задан в настройке очереди, аналогичный параметр берется из БД для очереди

PrefetchDepth

Глубина предварительной выборки в PrefetchBuffer. Не рекомендуется выше 500. Если 0, PrefetchBuffer не используется (рисунок 46)

Предварительная выборка используется в скоростном режиме. PrefetchBuffer – временный буфер, в который вычитывается сразу несколько элементов очереди из БД, и последующие обращения идут в этот буфер

PrefetchBufferResetInterval

Интервал (мсек) сброса PrefetchBuffer

Происходит синхронизация вычитанных из PrefetchBuffer элементов с БД

SpeedModeInterval

Интервал (мсек) между 2-мя последовательными запросами к чтению из очереди по FIFO, определяющий переключение в скоростной режим

PrefetchBuffer используется в скоростном режиме

PrefetchOffset

Отступ предварительной выборки для PrefetchBuffer. Параметр применяется случайным образом, если он больше 0. Чтобы разные ноды имели более высокий шанс заполнить свой PrefetchBuffer при его одновременном заполнении (для уменьшения вероятности попасть в заблокированные другой нодой элементы очереди)

Зарезервирован для перехода на .NET 7, не используется

Иллюстрация работы PrefetchBuffer:

В момент запроса t1 очередь еще работает в обычном режиме, запрос обслуживается напрямую в БД.

В момент запроса t2, так как t2 – t1 < SpeedModeInterval, очередь переходит в скоростной режим, и формируется PrefetchBuffer. Запрос обслуживается этим буфером. Операций в этот момент происходит больше, так как требуется сформировать PrefetchBuffer, но они соизмеримы по времени с обслуживанием запроса t1.

В моменты t3 и t4 очередь уже работает в скоростном режиме и запросы обслуживаются сразу из PrefetchBuffer.

Синхронизация прочитанных в PrefetchBuffer элементов с БД происходит в фоне с периодичностью PrefetchBufferResetInterval. Эта синхронизация выполняется массово (не одиночные запросы к БД) через внутреннюю очередь.

Условие проверки уникальности натурального ключа (глобального или локального) элемента очереди после его удаления задается булевыми параметрами DeletedNaturalKeysIsGlobalUniqueRequired и DeletedNaturalKeysIsUniqueRequired. Если true – удаленный элемент не участвует в проверке уникальности.

Last updated