Разделение серверов в кластере на фронт и бэк
В версии системы 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мс.