logo

Разделение серверов в кластере на фронт и бэк

Внимание!
Данная статья актуальна только для версий системы 3.15.0 и выше.

В версии системы 3.15.0 реализована возможность отключить на отдельных узлах фермы выполнение фоновых операций, включая выполнение очереди исполнения процессов. Это позволит минимизировать случаи возникновения ошибок и ускорит выполнение веб-запросов. Например, отключите лишние работы на сервере, который обслуживает только работу пользователей в веб-интерфейсе (выполняет веб-запросы).

Чтобы выполнить настройку, внесите изменения в файл Settings.config, который расположен в папке …\<Общая папка с файлами системы ELMA>\UserConfig\WebApplication.

При разделении серверов в кластере на фронт и бэк обязательно требуется установить настройку Workflow.ImmediatelyExecuteItem = false.

Настройка узла фермы, который обрабатывает только веб-запросы

Отключите выполнение очереди исполнения процессов. Для этого в параметре Workflow.QueuePoolSize установите значение 0.

Настройки в файле Settings.config для версии 4.0.29 и выше

В версии системы 4.0.29 реализованы следующие настройки в файле Settings.config, которые нужно выполнить:

  • выключите планировщик, используя Scheduler.Actor.Enabled;
  • отключите публикацию, используя Publication/Actor.Enabled (отключить публикацию можно только в версии 4.0.29 и выше).

Настройки в файле Settings.config для версии 3.15.0 и выше (до 4.0.28 включительно)

Выключите планировщик, используя Scheduler.Enabled.

Настройка узла на выполнение только фоновых операций (без веб-запросов)

Для настройки узла на выполнение только фоновых операций нужно:

  • вывести узел фермы из балансировщика, чтобы на него не распределялись веб-запросы;
  • опционально настроить дополнительные параметры в файле Settings.config, чтобы получить требуемый уровень производительности системы.
Настройки в файле Settings.config

Планировщик на таких узлах должен быть включен и правильно настроен. Следующие параметры планировщика можно настраивать:

  • Enabled – включение/отключение планировщика;
  • PoolSize – максимальный размер пула для планировщика (максимальное количество потоков);
  • Interval – интервал (в секундах) между выполнением операций;
  • ProcessingOnceTasksCount – максимальное число одиночных (не периодических) задач планировщика, выбираемых для исполнения на каждую итерацию;
  • PeriodicEnabled – включены ли периодические задачи планировщика;
  • PoolSize – максимальный размер пула для планировщика, работающего в цикле (максимальное количество потоков);
  • Timeout – время жизни результата выполнения задачи планировщика. По истечении задача в статусе "Выполняется" считается не активной. Значение по умолчанию 720.

После настройки планировщика нужно настроить параметры выполнения очереди исполнения процессов:

  • QueuePoolSize – максимальный размер пула очереди Workflow (максимальное количество потоков);
  • QueueTimeout – максимальное время (в секундах) выполнения элемента очереди;
  • QueueLockTimeout – отвечает за блокировку сущности IWorkflowQueueItem с ожиданием в течение указанного времени (в секундах);
  • WaitNextTaskTime – время ожидания, пока для экземпляра процесса есть запланированные элементы очереди.
  • QueuePoolScale – коэффициент к размеру пула очереди для получения элементов очереди из базы (по умолчанию 4). Данный коэфиуиент влияет на выборку элементов из очереди в очередном цикле выборки:

"Кол-во для выборки" = ( Workflow.QueuePoolSize * Workflow.QueuePoolScale ) - "Сколько осталось в очереди"

  • ImmediatelyExecuteItem – параметр, который определяет сразу выполнять вновь создаваемый WorkflowQueueItem на том же сервере в новом фоновом потоке или положить в очередь на общих основаниях. Данная настройка позволяет управлять загрузкой серверов в кластере и выделять отдельные бэк-сервера для обработки очереди процессов.

При установке в "false" веб-запрос на исполнение или запуск процесса НЕ порождает новый поток на текущем сервере для выполнения процесса.

  • DeleteInstanceInfoState – удалять состояние State сущности экземпляра процесса WorkflowInstance при завершении процесса. При переходе из статуса Запущен в статусы: Завершен, Прерван пользователем, Прерван из-за ошибки.
  • Timeout – таймаут потока обработки пула очереди Workflow [мс]. Значение по умолчанию 50мс.
  • System.Timeout – таймаут брокера пула потоков Workflow [мс]. Значение по умолчанию 50мс.
  • Timeout – таймаут потока обработки элемента очереди Workflow [мс]. Значение по умолчанию 50мс.
  • System.Timeout - таймаут брокера пула потоков обработки элемента очереди Workflow [мс]. Значение по умолчанию 50мс.