4
Архитектура
scheduler supervisor
DB1
DB2
scheduler
executor
executor
scheduler
at-executor
at-executor
at-executor
at-executor
…
…
…
для периодических заданий
schedule.max_workers = 2
для разовых заданий
schedule.max_parallel_workers = 2
executor
executor
…
↑
↑?
schedule.auto_en abled
schedule.database
Планировщик задач использует механизм фоновых рабочих процессов.
Основной процесс-диспетчер планировщика (один на весь кластер баз
данных) запускается функцией schedule.enable, а для автоматического
его запуска при старте сервера нужно установить параметр
schedule.auto_enabled = true.
Диспетчерский процесс проверяет настройки и для каждой из
указанных в параметре schedule.database баз данных запускает
отдельный процесс-менеджер (для показанной на слайде конфигурации
нужно задать значение 'DB1,DB2'). Также сразу запускаются
обработчики разовых заданий планировщика, их количество
ограничено значением schedule.max_parallel_workers.
Максимальное количество обработчиков для планируемых заданий
в каждой базе ограничено параметром schedule.max_worker s.
Оба ограничения можно задавать на уровне базы данных командой
ALTER DATABASE. Обработчики периодических и разовых заданий
работают независимо.
При этом общее количество рабочих процессов сервера ограничено
параметром max_worker_processes, его значение должно учитывать
потребности и других задач, использующих фоновые процессы.
Если нет свободных процессов для выполнения, задание будет ожидать
освобождения обработчика. По умолчанию время ожидания не
ограничено, поэтому, планируя задание, разумно указывать
ограничение времени, при превышении которого pgpro_scheduler
отменит выполнение.