Воркеры — это компоненты DDP (портала), которые обрабатывают задачи из очереди в фоновом режиме. Они обеспечивают асинхронное выполнение различных операций, таких как:

  • Синхронизация данных из источников данных.
  • Запуск действий и процессов.
  • Проверки статуса сущностей.
  • Запуски AI-агентов из элементов процессов «AI-агент».
  • Периодическая синхронизация каталогов внешних MCP-серверов.

Воркеры работают независимо от основного приложения и позволяют масштабировать нагрузку на систему, перенося ресурсоёмкие операции на выделенные реплики.

Конфигурация

Параметры воркеров задаются в секции spec.settings.workers ModuleConfig development-platform или в настройках модуля в веб-интерфейсе Deckhouse Platform. Доступны следующие параметры.

Количество реплик

Параметр workers.replicas определяет количество одновременно работающих воркеров. По умолчанию — 2. Каждый воркер обрабатывает задачи независимо от других.

Максимальное количество параллельных задач

Параметр workers.maxTasks определяет, сколько задач каждый воркер обрабатывает параллельно. По умолчанию — 10.

Общее количество задач, обрабатываемых одновременно всей системой, рассчитывается как workers.replicas × workers.maxTasks. Например, при 2 воркерах и 10 задачах на каждый воркер, система может обрабатывать до 20 задач одновременно.

Мониторинг

Для мониторинга работы воркеров и очереди задач доступен виджет «Очередь задач», который отображает:

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

Типы обрабатываемых задач

Воркеры обрабатывают следующие типы задач:

Задачи проверки статуса сущностей

Задачи проверки статуса выполняются воркерами, которые определяют состояние сущностей на основе настроенных правил. Такой подход позволяет:

  • Снизить нагрузку на основной сервер.
  • Обеспечить стабильность работы при большом количестве сущностей.
  • Гарантировать выполнение проверок даже при высокой нагрузке на основное приложение.

Задачи синхронизации источников данных

Воркеры обрабатывают задачи синхронизации данных из внешних источников, что позволяет:

  • Выполнять синхронизацию в фоновом режиме.
  • Не блокировать интерфейс пользователя.
  • Обрабатывать большие объёмы данных.

Задачи выполнения действий

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

  • Асинхронное выполнение действий.
  • Возможность отслеживания прогресса выполнения.
  • Стабильность работы интерфейса.

Задачи запуска AI-агентов

Воркеры выполняют запуски AI-агентов из элементов процессов «AI-агент»: отправляют задачу агенту по протоколу A2A и ждут её завершения. Длительность одного запуска ограничена 70 минутами. Пока запуск выполняется, он занимает одну из workers.maxTasks параллельных задач воркера.

Синхронизация MCP-серверов

Периодическая синхронизация каталогов MCP-серверов выполняется воркерами. Включите её в настройках сервера и задайте системную учётную запись. При неудачной попытке сохраняется предыдущий каталог; результаты и время обновления доступны в карточке сервера. Настройка — в руководстве по MCP.

Фоновые операции с данными в ClickHouse

Если подключён ClickHouse, воркеры дополнительно переносят в него данные из PostgreSQL и убирают лишнее. Так, например, обслуживается история изменений параметров сущностей:

  • перенос новых записей об изменениях из PostgreSQL в ClickHouse;
  • перестроение индексов очереди в PostgreSQL после переноса большого объёма изменений;
  • удаление истории сущностей и параметров, которых больше нет;
  • удаление истории, вышедшей за срок хранения.

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

Параметры переноса задаются в секции clickhouse.replication настроек модуля: размер и периодичность переноса, перестроение индексов. Срок хранения истории и периодичность очистки — в секции clickhouse.propertyHistory.

Масштабирование

При необходимости увеличения производительности системы можно:

  1. Увеличить количество реплик воркеров — это позволит обрабатывать больше задач одновременно.
  2. Увеличить количество параллельных задач на воркер — это повысит утилизацию каждого воркера.

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

Устранение неполадок

Воркеры не обрабатывают задачи

Если задачи накапливаются в очереди и не обрабатываются:

  1. Проверьте, что воркеры развёрнуты и работают (через виджет «Очередь задач»).
  2. Убедитесь, что количество реплик воркеров больше 0.
  3. Проверьте логи воркеров на наличие ошибок.
  4. Убедитесь, что у воркеров достаточно ресурсов (CPU, память).

Медленная обработка задач

Если задачи обрабатываются медленно:

  1. Увеличьте количество реплик воркеров.
  2. Увеличьте количество параллельных задач на воркер (если позволяет ресурсная база).
  3. Проверьте производительность внешних систем, с которыми работают воркеры.
  4. Убедитесь, что нет узких мест в сети или базе данных.