Доработка службы запуска процессов

Не так давно была разработана служба для параллельного запуска процессов. В целом, она хорошо себя зарекомендовала и позволила существенно ускорить запуск процессов в высоконагруженных системах. Однако за время ее эксплуатации были выявлены некоторые недостатки:

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

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