2026 OpenClaw MCP stdio: дочерние процессы Накопление в Gateway · возврат памяти · сравнение с HTTP MCP

У вас уже работают OpenClaw Gateway и stdio MCP, но в продакшене видно медленный рост числа дочерних процессов, рост RSS или редкие OOM, и непонятно — править конфигурацию или менять архитектуру. Статья дополняет разбор handshake MCP stdio/HTTP и зависаний и наблюдаемость Gateway в продакшене: сначала семь правил границ, затем таблица stdio и HTTP, шестишаговый runbook reclaim и ограничения нагрузки, заметки про systemd/Docker; в конце — ссылки на раздел OpenClaw и сценарии вычислений.

01

Зона ответственности статьи: семь вещей, которые ею не заменить

Для stdio MCP рукопожатие, зависания, отказ в доступе — сначала статья про handshake; белые списки и политика инструментовбелые списки MCP; проверки здоровья, логи, откатнаблюдаемость. Здесь только: Gateway уже стабильно принимает сессии, но дочерние процессы и кривые памяти неприемлемы — как управлять по слоям.

  1. 01

    Первое рукопожатие не удалось: транспорт MCP и пути к исполняемым файлам ниже по цепочке; здесь не раскрывается.

  2. 02

    Токен / scope и gateway closed (1000): отдельная статья про closed(1000), а не правки скриптов reclaim.

  3. 03

    Чисто политика безопасности: изменения dmPolicy / networkPolicy — в статью про усиление.

  4. 04

    Gateway не поднимается / not ready: порты, память, порядок compose — статья про not ready.

  5. 05

    Таймауты бэкенда модели на уровне приложения: можно параллелить с MCP, но причина может быть в маршрутизации.

  6. 06

    Разовые утечки из багов стороннего MCP: нужен фикс upstream или фиксация версии; reclaim лишь смягчает.

  7. 07

    «Очистка» как панацея: жёсткие kill без уровней воды и журнала версий скрывают настоящие утечки.

В обсуждениях open source stdio MCP как дочерние процессы Gateway при долгих сессиях могут раздувать пул вместе с сессиями; поведение меняется между релизами. В эксплуатации стоит закрепить «допустимый потолок процессов + политику reclaim» в runbook, а не надеяться на умолчания. Сначала модель изоляция сессий → ожидаемое накопление, затем таблица.

Пересечение со статьёй про handshake: при сбоях в логах ошибки соединения/handshake; типичные сигналы здесь — монотонный рост числа процессов, ступенчатый рост памяти, OOM по фиксированному ритму. При разборе проверьте родство Gateway и MCP (ps / pstree в контейнере), чтобы не считать бэкенды моделей или каналы за MCP.

Если крутится несколько цепочек инструментов (локальные скрипты и постоянные агенты на удалённом Mac), нарисуйте топологию: где Gateway, где тяжёлый MCP. Запас памяти на узле Gateway ограничивает параллельные stdio-сессии. Ёмкость и доступ: тарифы аренды и требования сети из справочного центра.

Для наблюдаемости соберите минимум три ряда: число процессов, RSS Gateway и MCP, QPS вызовов инструментов и число сессий. Без измерения по сессиям не отличить пик нагрузки от отсутствия reclaim. Согласуйте поля логов с наблюдаемостью, иначе дежурство сводится к перезапуску наугад.

Частая ошибка: «много детей = нужен HTTP». Если инструменты очень лёгкие и параллелизм низкий, чаще виноваты не закрытые сессии или блокирующий исполняемый файл ниже по цепочке; сначала сжать жизненный цикл на клиенте, потом оценивать миграцию транспорта.

02

stdio MCP и HTTP MCP: сравнение в эксплуатации (когда думать о миграции)

stdio запускает MCP-сервер как дочерний процесс, тесно связанный с жизненным циклом Gateway; HTTP ближе к отдельной конечной точке, с иными путями масштабирования и проверок. Таблица помогает выбрать «дальше крутить stdio» или «перейти на HTTP».

Измерениеstdio MCPHTTP MCP
Связь процессовДети следуют модели Gateway/сессий; накопление заметноЧасто отдельный процесс, Gateway — клиент
Горизонтальное масштабированиеЧасто нужно масштабировать Gateway или ограничивать сессииМожно реплицировать только сервис MCP
Проверки здоровьяЛоги Gateway и таблица процессовHTTP-пробы и отдельный SLO
Радиус пораженияПроблемы детей тормозят Gateway на том же хостеЛучше изоляция, но лишний сетевой hop
Когда уместноЛёгкие инструменты, низкая параллельность, доверенный хостТяжёлые инструменты, высокая нагрузка, свой релизный цикл

«Управление» — не бесконечное железо, а договор по кривым процессов и памяти: сверх договора — ограничение, reclaim или смена транспорта.

Если в stdio/HTTP handshake конфигурация уже проверена, а красная линия по памяти не уходит, включайте «переход на HTTP» в архитектурный обзор, а не бесконечно увеличивайте хост.

03

Шестишаговый runbook по дочерним процессам и памяти (для дежурного гида)

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

  1. 01

    Базовая линия: при стабильной нагрузке записать число процессов, RSS, версию Gateway и пакетов MCP в журнал изменений.

  2. 02

    Пики и утечки: пики обычно связаны с параллельными сессиями; монотонный рост похож на отсутствие reclaim или зависший downstream — снимайте стеки.

  3. 03

    Сжать параллелизм и таймауты: в пределах конфигурации снизить параллельные вызовы инструментов и укоротить простой; смотреть на кривые.

  4. 04

    Плановый reclaim: в окне обслуживания — rolling-рестарт Gateway или изоляция узла, сначала drain сессий.

  5. 05

    Контейнеры и systemd: убедиться, что переменные окружения попадают в реальную среду (частая ловушка: daemon и интерактивная оболочка).

  6. 06

    Оценка миграции на HTTP: для тяжёлых MCP или сервисов с отдельным масштабом — отдельный деплой, проверки здоровья, переключение Gateway на HTTP-транспорт.

bash · снимок процессов (пример)
ps -axo pid,ppid,rss,comm | grep -E 'openclaw|mcp|node' | head -n 50
# В контейнере вместе с pstree -p 1 для родства
info

Подсказка: после правок openclaw.json выполните рекомендованную валидацию (например config:validate / doctor), затем rolling-рестарт, чтобы не получить «конфиг как будто применён, процессы на старых значениях».

В публичных issue сообщали, что дочерние stdio MCP не возвращаются при смене сессии; в эксплуатации периодический reclaim + учёт версий — временная мера, пока не будет фикса upstream. Не полагайтесь долго на недокументированный ручной kill.

При внешней оркестрации (systemd timer, k8s CronJob) для sidecar reclaim выровняйте пользователя Gateway, окружение и лимиты памяти cgroup — иначе дерево процессов в скрипте разойдётся с продакшеном. На маленьком одиночном узле сначала ужмите параллелизм и таймауты в рамках договора.

Каждое изменение reclaim или ограничения связывайте с номером релиза; поведение stdio может меняться между минорными версиями Gateway.

04

systemd и Docker: переменные окружения, политика перезапуска, «не те логи»

Службы systemd не наследуют интерактивный ~/.zshrc. В Docker Compose пути к MCP и монтирование только для чтения могут гонять детей в цикл перезапусков. Вместе с Docker в продакшене проверьте Environment=, WorkingDirectory=, именованные тома и digest образа.

warning

Внимание: частый docker compose restart без кода выхода предыдущего запуска путает ошибку конфигурации с утечкой памяти.

Вместе со статьёй not ready: при нехватке памяти Gateway может не дойти до стабильной фазы MCP — сначала ресурсы и порядок запуска.

05

Ориентиры для дежурства (включая EEAT)

Ниже — типичные отправные точки; подгоняйте под свою нагрузку.

  • Запас памяти: на Linux-узле с Gateway и несколькими stdio MCP оставляйте существенно больше, чем для «только CLI-зонда», под пиковые сессии; при частых OOM сначала ограничение нагрузки, потом расширение.
  • Окна reclaim: плановый reclaim — в календаре изменений; аварийный — с таблицами процессов и фрагментами логов до/после, привязанными к версиям.
  • Критерий миграции: если тот же MCP на HTTP обслуживается со своим SLO, а кривые stdio долго неприемлемы — архитектурная миграция вместо бесконечных cron.

Сваливать Agent и Gateway на нестабильный узел с малым объёмом памяти — получить «двойную дрожь» цепочки инструментов и модели; наращивать железо без смены модели сессий — линейно раздувать стоимость. Для долгой онлайн-работы с предсказуемой вычислительной мощностью на macOS и запаса под экосистему OpenClaw облачная аренда Mac Mini от NodeMini с фиксированным SSH и ясными характеристиками часто выгоднее кустарных ноутбуков или перегруженных shared-хостов: тарифы и справочный центр по сети и доступу.

Зафиксируйте на одной странице договора «потолок stdio-сессий + политика reclaim + триггеры миграции на HTTP», чтобы разработка и SRE смотрели на одни метрики.

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

FAQ

Частые вопросы

Не обязательно. Отделите ожидаемый рост из-за изоляции сессий от накопления вроде утечки, сверьте RSS и версию Gateway; при необходимости обновитесь до исправленного релиза, а не только добавляйте cron.

Когда жизненный цикл дочерних процессов долго плохо согласуется с моделью сессий или запас памяти на узле остаётся недостаточным без масштабирования, HTTP MCP часто проще масштабировать и проверять независимо. Контекст — в разделе OpenClaw.

Сначала тарифы аренды для сравнения уровней, затем справочный центр по сети и доступу для таблицы ёмкости.