Воркеры — это компоненты 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.
Масштабирование
При необходимости увеличения производительности системы можно:
- Увеличить количество реплик воркеров — это позволит обрабатывать больше задач одновременно.
- Увеличить количество параллельных задач на воркер — это повысит утилизацию каждого воркера.
При увеличении нагрузки на воркеры необходимо убедиться, что у кластера достаточно ресурсов (CPU, память) для обработки всех задач.
Устранение неполадок
Воркеры не обрабатывают задачи
Если задачи накапливаются в очереди и не обрабатываются:
- Проверьте, что воркеры развёрнуты и работают (через виджет «Очередь задач»).
- Убедитесь, что количество реплик воркеров больше 0.
- Проверьте логи воркеров на наличие ошибок.
- Убедитесь, что у воркеров достаточно ресурсов (CPU, память).
Медленная обработка задач
Если задачи обрабатываются медленно:
- Увеличьте количество реплик воркеров.
- Увеличьте количество параллельных задач на воркер (если позволяет ресурсная база).
- Проверьте производительность внешних систем, с которыми работают воркеры.
- Убедитесь, что нет узких мест в сети или базе данных.