Асинхронный режим работы серверов приложения

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

Активация асинхронного режима

Для активации асинхронного режима работы серверов приложений необходимо выполнить следующие действия:

  • На серверах, которые выполняют роль координатора кластера, указать в числе JVM-параметров:

    -Dpreferred.coordinator=true 

  • На серверах, которые будут участвовать в запуске задач указать в числе JVM-параметров (либо удалить данный параметр из списка):

    -DdisableJMS=false

  • Задать следующие значения свойствам конфигурации:

    • Конфигурация сервера. Планировщик заданий. Режим работы Планировщика заданий="ASYNC";

    • Конфигурация сервера. Планировщик заданий. Ведение расширенной статистики="true";

    • Системный журнал. Общий системный журнал:

      log4j.logger.com.bssys.sbns.scheduler.SchedulerManagerImpl=TRACE
      log4j.logger.com.bssys.sbns.cluster=TRACE
      log4j.logger.org.quartz=ERROR
      log4j.logger.org.quartz.core=TRACE

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

    Для определения задач, требующих изменение настройки, можно воспользоваться запросом:

    select * from SBNS_CONFIGURATION where SUBSYSTEMID = 'SCHEDULER_SERVICE' order by SYSCREATETIME desc;

    Альтернативный вариант определения задач, у которых требуется осуществить деактивацию настройки serverNames=: Администрирование системыКонфигурация системыПодсистема запуска задач по расписанию. Требуется осуществить правку задачи, у которых в колонках Значение или Примечание параметр serverNames= не пустой.

Конфигурирование кластера

Кластеризация серверов приложений реализована через БД системы. В качестве координаторов кластера выступают те сервера приложений, для которых в стартовых JVM-параметрах указана опция:

-Dpreferred.coordinator=true 

Если в составе кластера более одного подобного сервера, то в качестве координатора выбирается тот, который был запущен раньше всех, либо если время запуска идентично – в алфавитном порядке по названиям серверов. Если в составе серверов кластера ни для одного из серверов данная опция не задана, в качестве координатора будет выбран сервер, запущенный раньше всех.

Для настройки параметров работы кластера используются следующие конфигурационные свойства системы:

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

Задает периодичность, с которой каждый узел кластера посылает в БД «heartbeat» – маркер активности узла. Значение по умолчанию: 1000 мс.

Конфигурация сервера. Конфигурация кластера. Периодичность (в миллисекундах), с которой отслеживается состояние кластера

Задает периодичность, с которой координатором кластера отслеживается активность узлов, т. к. наличие в БД соответствующего маркера активности от каждого из узлов. Значение по умолчанию: 1000 мс.

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

Задает таймаут, по истечении которого узел кластера, для которого в течении заданного таймаута не были обнаружены маркеры активности, будет считаться выключенным. Значением по умолчанию: 5000 мс.

Обмен сообщениями, связанными с запуском / выполнением задач

На всех серверах кластера при использовании асинхронного режима должен быть соответствующим образом отредактирован файл контекста Context.xml сервера приложений, в котором должен быть описан ресурс планировщика задач, т. е. должна присутствовать запись следующего вида:

<Resource name="sbns/scheduler-messages-connector" auth="Container"
          type="org.apache.activemq.pool.PooledConnectionFactory"
          description="SBNS-Queues JMS Connection Factory"
          factory="org.apache.activemq.jndi.JNDIReferenceFactory"
          brokerURL="tcp://localhost:61616?jms.prefetchPolicy.all=1&amp;jms.optimizeAcknowledge=true"
          brokerName="scheduler-messages-connector"/>

В стартовых JVM-параметрах каждого сервера из состава кластера должны быть также указаны следующие опции:

Указатель на имя ресурса планировщика задач

-Dscheduler.messages.jndi=sbns/scheduler-messages-connector

Размер пула потоков

-Dscheduler.messages.consumers.pool.size=2

Конфигурирование планировщика

Для планировщика заданий предусмотрено два режима работы – синхронный и асинхронный. При переводе серверов приложений на асинхронный режим работы, соответствующим образом требуется переключить планировщик заданий в асинхронный режим.

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

Конфигурация сервера. Планировщик заданий. Режим работы Планировщика заданий

Задает используемый режим работы планировщика заданий. Для асинхронного режима должно иметь значение "ASYNC".

Конфигурация сервера. Планировщик заданий. Ожидаемое число серверов кластера, работающих с Планировщиком заданий

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

Конфигурация сервер. Планировщик заданий. Время ожидания появления других серверов в кластере

Задает таймаут для свойства Конфигурация сервера. Планировщик заданий. Ожидаемое число серверов кластера, работающих с Планировщиком заданий.

Конфигурация сервера. Планировщик заданий. Ведение расширенной статистики

Позволяет включить / отключить ведение расширенной статистики по работе кластера. По умолчанию отключено.

Конфигурация сервера. Планировщик заданий. Пороговое значение для просроченных задач (в секундах)

При старте сервера, планировщик осуществляет запуск задач, которые были просрочены. Однако, если время, на которое они были просрочены, превышает значение, заданное данным свойством, то выполнение таких задач откладывается, и они запускаются в соответствии со своим расписанием. Значение по умолчанию: "600" с.