Skip to content

Latest commit

 

History

History
42 lines (28 loc) · 7.24 KB

configuring-queue-elements-parameters.md

File metadata and controls

42 lines (28 loc) · 7.24 KB

Параметры очереди обмена данными

Параметры для настройки очереди обмена данными расположены в секции 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 – удаленный элемент не участвует в проверке уникальности.