Балансировка

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

Имя секции

Название параметра

Имя параметра

Default

Min

Max

commonParams

Потребление памяти модулем (% от CPU).

maxModuleMemoryUsage

2

1

50

processParams

Максимальное количество потоков выполнения процессов/алгоритмов.

threadCount

5

1

10

processParams

Максимальное количество спящих процессов.

maxSleepingProcessCount

100

50

1000

processParams

Максимальный объем спящих процессов (МБ).

maxSleepingProcessMB

200

10

600

processParams

Максимальный объем памяти ожидающих старта процессов (МБ).

maxUnprocessedQueueMB

30

10

300

processParams

Минимальное время ожидания при переходе в спящий режим (мс).

minWaitBeforeSleep

10000

2000

processParams

Максимальное количество запросов, одновременно ожидающих ответа (% от maxSleepingProcessCount или maxSleepingProcessMB).

maxRunnedRequests

50

1

99

processParams

Максимальная длительность ожидания спящих процессов (мин).

maxSleepTimeMinutes

1440

1

Балансировка призвана сглаживать нагрузки на конкретном узле путем изменения количества потоков и памяти, выделенных на выполнение процессов.

По умолчанию балансировка включена на уровне кластера. При необходимости ее можно отключить на кластере или на конкретном сервисе процессов, установив параметр useBalancing: false.

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

Параметр Потребление памяти узлом устанавливается в настройках кластера и сервиса процессов однозначно и при балансировке не изменяется. Остальные параметры изменяются в диапазоне значений между Min / Max в зависимости от нагрузки и ресурсов CPU узла.

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

../_images/image26.png

Узел раз в минуту отслеживает использование ресурсов. При нагрузке на сервис:

  • Если сервис приблизился к порогу потребления ресурсов, балансировщик уменьшает все показатели до тех пор, пока порог потребления памяти не будет соблюдаться.

  • Если потребление ресурсов ниже чем 80% от максимально допустимого, происходит увеличение количества потоков до тех пор, пока потребление памяти не достигнет 90% от максимального.

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

Внимание

Измененные параметры балансировщика отправляются узлом на сервис только в том случае, если на сервис идет нагрузка. В состоянии покоя балансировщик только снимает показатели.

../_images/image27.png