Настройка подсистемы управления процессами (Workflow)

Михаил Захаров

Подсистема "Управление процессами" содержит ряд настроек, которые касаются производительности. Задача установки оптимальных параметров возникает довольно часто. В данной статье описано из каких критериев нужно исходить при выборе значений.

Значение параметров приведено в руководстве администратора.
Время между тиками (сек) - пауза между периодами активности сервера бизнес-процессов ("тиками"); по умолчанию этот интервал равен 10 секундам, при большом количестве активных процессов рекомендуется его увеличить;

Максимальный объем памяти (Мб), который может использовать при работе сервер управления процессами; по умолчанию его значение равно 512 Мб;

Время ожидания выполнения функции в потоке (сек) - период задержки перед повторным исполнением функции в циклическом бизнес-процессе; этот период используется, если в настройках функции в поле "Период опроса" не указан другой интервал;

Время тика - продолжительность активности сервера бизнес-процессов;

Функций за тик - количество функций одного бизнес-процесса, обрабатываемых сервером бизнес-процессов за один период активности;

Число процессов в одном пакете - максимальное количество бизнес-процессов в одной "порции" (пакете), которые обрабатываются одновременно; общая продолжительность тика зависит от количества пакетов, однако размер пакета следует ограничивать соразмерно с объемом оперативной памяти компьютера;

Размер пула шлюза, где пул шлюзов - это совокупность параллельно работающих экземпляров шлюзов одного типа с одинаковыми настройками, выделяемых для обработки процессов;

Размер пула сессий, где пул сессий - это совокупность параллельно работающих сессий с одинаковыми настройками подключения, выделяемых для обработки процессов;

Время ожидания выполнения метода Storage Server (сек) - период ожидания ответа сервера, после которого возвращается сообщение об ошибке (Сервер недоступен").

Оценивая возможности подсистемы Workflow необходимо учитывать, что разные функции дают разную нагрузку на систему. Например, ф-ции, которые работают с карточками или любыми данными в базе выполняют соединение с сервером DocsVision и скорость их работы определяется так же производительностью сервера (выполнение запросов в базе, обработка результатов и т.п.). А функции сценарий, практически не задействуют сервер и БД (разве, что, для чтения настроек). Т.о. функция "Мониторинг DocsVision" может выполняться долго, если в поисковом запросе участвует много карточек. А функция задание может выполниться мгновенно если ожидает изменений в карточке.

Поэтому, довольно трудно дать формулу, в которую можно подставить число экземпляров, частоту процессора, количество ядер и объем ОЗУ, и в результате получить значение параметров.

Какие же профили можно использовать для решения конкретных задач?

1. Если необходимо более часто брать в обработку процессы - уменьшаем число функций за тик. Максимально частой обработке новых процессов соответствует 1 функция за тик (при неизменном желаемом времени тика).
Т.е. чтобы проходило меньше времени между тем как пользователь или функция подпроцесс запустит новый процесс, и тем моментом, как функция "Старт" в них станет обработанной.

2. Если хочется максимально быстро обрабатывать "длинные" процессы - увеличиваем число функций за тик. Например до 50-100. Но тут уже возникает опасность постоянной обработки какого-нибудь цикла, который не несет полезной нагрузки (например, какая-нибудь функция зацикленная на себя при помощи связи по ошибке)

3. Чтобы не зависеть от функций, которые долго выполняются или вообще подвисают на какой-нибудь операции с внешней системой, можно уменьшить "Время ожидания функции в потоке". С 900 секунд, до 180.

Параметры справедливы для машины с любым количеством ядер. Ну разве что не стоит выставлять размер пакета процессов меньше, чем число потоков, которые система может обрабатывать параллельно.
(Чисто теоретически это число вычислительных ядер в системе. Если поддерживается HyperThreading - то число ядер умножается на 2. Т.е. в принципе, в современном однопроцессорном четырехядерном сервере может параллельно обрабатываться до 8 потоков. А сверху число потоков ограничено максимальным размером пула потоков: 64 т.е. ставить размер пакета больше 64 тоже смысла нет)

Средними настройками, подходящими под большинство решений, являются:

  • Время между тиками - от 2 до 10 с;
  • Количество функции за тик - от 5 до 15;
  • Число процессов в пакете- от 10 до 40;
  • Время ожидания выполнения функции в потоке - 900 с;
  • Время ожидания выполнения метода Storage Server - 600 c;
  • Время тика - 300 с;
  • Максимальный объем памяти - от 512 до 1536 Mb.

Страница сайта http://185.71.96.61
Оригинал находится по адресу http://185.71.96.61/home.asp?artId=21521