---
read_when:
    - Запуск або налагодження процесу Gateway
    - Дослідження забезпечення єдиного екземпляра
summary: Захист синглтона Gateway за допомогою прив’язки прослуховувача WebSocket
title: Блокування Gateway
x-i18n:
    generated_at: "2026-04-27T21:48:14Z"
    model: gpt-5.4
    provider: openai
    source_hash: fe61ff81106554e98de1ca04c213b76d230265cdf3e81b70897d2de00f6a0179
    source_path: gateway/gateway-lock.md
    workflow: 15
---

## Чому

- Забезпечити, щоб на одному хості для кожного базового порту працював лише один екземпляр Gateway; додаткові Gateway мають використовувати ізольовані профілі та унікальні порти.
- Переживати збої/SIGKILL без залишення застарілих lock-файлів.
- Швидко завершуватися з чіткою помилкою, коли керувальний порт уже зайнятий.

## Механізм

- Gateway спочатку отримує lock-файл для конкретної конфігурації в каталозі lock стану та перевіряє налаштований порт на наявність існуючого прослуховувача.
- Якщо записаний власник блокування зник, порт вільний або блокування застаріле, під час запуску блокування повторно захоплюється, і виконання продовжується.
- Потім Gateway прив’язує прослуховувач HTTP/WebSocket (типово `ws://127.0.0.1:18789`) за допомогою ексклюзивного TCP-прослуховувача.
- Якщо прив’язка завершується помилкою `EADDRINUSE`, під час запуску викидається `GatewayLockError("another gateway instance is already listening on ws://127.0.0.1:<port>")`.
- Під час завершення роботи Gateway закриває сервер HTTP/WebSocket і видаляє lock-файл.

## Поверхня помилок

- Якщо порт утримується іншим процесом, під час запуску викидається `GatewayLockError("another gateway instance is already listening on ws://127.0.0.1:<port>")`.
- Інші помилки прив’язки проявляються як `GatewayLockError("failed to bind gateway socket on ws://127.0.0.1:<port>: …")`.

## Операційні примітки

- Якщо порт зайнятий _іншим_ процесом, помилка буде такою самою; звільніть порт або виберіть інший за допомогою `openclaw gateway --port <port>`.
- Під керуванням супервізора сервісів новий процес Gateway, який бачить наявний справний відповідач `/healthz`, завершується успішно й залишає керування цьому процесу. Якщо наявний процес так і не стає справним, кількість повторних спроб обмежується, і запуск завершується з чіткою помилкою блокування замість нескінченного циклу.
- Програма macOS, як і раніше, підтримує власний легкий PID-захист перед запуском Gateway; блокування під час виконання забезпечується lock-файлом разом із прив’язкою HTTP/WebSocket.

## Пов’язане

- [Кілька Gateway](/uk/gateway/multiple-gateways) — запуск кількох екземплярів з унікальними портами
- [Усунення несправностей](/uk/gateway/troubleshooting) — діагностика `EADDRINUSE` і конфліктів портів
