RSS Подписка на статьи RSS Подписка на комментарии Панель инструментов

Блог профессионалов стал частью сайта технической поддержки DocsVision http://support.docsvision.com. Новые материалы будут появляться уже на этом сайте.

Поиск

Ярлыки

авто генерация кода (1) Администрирование DocsVision (60) Атрибутивный поиск (3) База данных (24) Базы знаний (1) Безопасность (1) Бизнес-процессы (20) Блог (2) Вы увидите это первыми (1) Групповые политики (1) Диаграммы (2) Задания (2) Интеграция (2) Карточки DocsVision (14) Конструктор Решений (11) Маркетинг и продажи (4) Навигатор (3) Новое (3) Новости (32) Опрос (4) Опросы DocsVision (4) Оптимизация (3) Отчеты (2) Ошибки (1) Поддержка (14) Полезные ссылки (1) Представления (4) Производительность (5) Разбор полетов (18) Разработка для Workflow (7) разработка карточек (2) Разработка на платформе DocsVision (41) Разработка решений (43) Расширение платформы (1) Расширенные отчеты (9) Решения на платформе DocsVision (6) Сервисы DocsVision (3) Сканеры (3) Справочник сотрудников (1) Справочник типов (1) Установка (1) Утилиты (13) Шлюз в SharePoint (8) Штрихкод (2) Cкрипты карточек (7) DocsVision внутри (1) DocsVision Live (1) FileStream (1) FireFox (2) Opera (1) Powershell (5) Safari (1) SharePoint2007 (1) SharePoint2010 (2) Silverlight (1) UltraViews (1) Vista (1)

Настройка подсистемы управления процессами (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.

Читать дальше

4 коммент.:

Ice комментирует...

Спасибо, сделал для себя некоторые выводы.

Вопрос по параметру "Время ожидания выполнения функции в потоке (сек)". Сказано, что этот параметр определяет период задержки между повторным выполнением функции кубика. Значение по умолчанию: 900 сек. Значит ли это, что если кубик "мониторинг DV" осуществил поиск по сложному какому-то запросу, который выполняется секунд 30, и ничего не нашёл, то повторный поиск карточек произойдёт только через 15 минут, если в поле период опроса стоит 0 минут?

Вроде бы повторный поиск запускается сразу же безо всякого периода, поэтому если поиск в мониторинге сложный, то WF начинает сииильно тормозить, т.к. каждый тик выполняется ооочень долго. Для избежания таких ситуаций в случае неудачного поиска, я передаю управление функции расписания, чтобы как раз вставить таймаут между поисками.

Михаил Захаров комментирует...

На самом деле, в руководстве дана неверная формулировка, которая приводит к непониманию - это мы поправим в ближайшее время.

Это параметр - допустимое время выполнения функции. При привышении этого значения, ф-ция считается превысившей допустимое время выполнения и фиксируется таймаут.

Ice комментирует...

Михаил, вот просветите ещё по параметру размер пула сессий. Т.е. получается сколько сессий, столько одновременно и тиков выполняется сервером Workflow? А иначе как объяснить в логе Workflow сообщения вида:
ProcessManager: 22.10.2009 9:57:52 Execution takes 15,9217731 seconds, processed 82 functions in 23 active instances

Если параметр функций за тик равен 15?

Михаил Захаров комментирует...

Пул сессий никак не связан с тиком. Это набор готовых подключений к серверу DocsVision. Функция может выбрать уже созданное подключение из пула, либо создать новое, если верхний лимит не достигнут

Отправить комментарий