---
title: "Устранение сбоя erpc worker"
description: "Частые сообщения об ошибках erpc worker, что каждое значит и что делать, как восстановить сервер, который мог быть захвачен, и чего erpc никогда не делает."
canonical: "https://erpc.global/ru/doc/erpc-cli/worker-troubleshooting/"
locale: "ru"
---

# Устранение сбоя erpc worker

Найдите начало сообщения, которое вывел `erpc worker`, и сделайте то, что сказано в его строке.

Эта страница описывает ERPC CLI `v0.1.0-rc.4` — пререлиз.

## Сообщения об ошибках и что делать

Сбои воркера используют коды и статусы завершения erpc: см. [Ошибки и коды завершения](https://erpc.global/ru/doc/erpc-cli/commands/#ошибки-и-коды-завершения).

| Сообщение (его начало) | Причина | Что делать |
| --- | --- | --- |
| `<app> cannot start without <SETTING>` | `run.requires` называет настройку, которую ничто не задаёт | `erpc worker secret put <SETTING>`, задайте её в `[vars]` или выполните развёртывание с линией, которая её задаёт (`--grpc`, `--unlimited`) |
| `your key was added but does not get in` | SSH-агент не подписал: 1Password заблокирован или его запрос не разрешён | Разблокируйте 1Password, разрешите запрос и снова выполните ту же команду. Она продолжит работу |
| `1Password could not …: authorization timeout` | 1Password запросил одобрение, и никто не ответил | Разрешите запрос в 1Password и выполните команду снова |
| `<NAME> is empty; nothing was kept` | `secret put` прочитал пустой стандартный ввод: оболочка не является терминалом | Запустите команду в терминале или передайте значение через конвейер |
| `the keystore is locked, and nobody is at a terminal …` | Команде без терминала нужен keystore, а сохранённой разблокировки нет | `erpc worker secret unlock` в терминале, затем снова команда |
| `nothing is kept under keystore:… on this machine` | Значение было сохранено в keystore другой машины | `erpc worker secret put <NAME> --replace` здесь; для ключа перенесите весь каталог `keystore` той машины и его парольную фразу |
| `release <id> failed: …; the server went back to <previous>` | Новый релиз не прошёл проверку работоспособности | Смотрите `erpc worker logs`. Предыдущий релиз продолжает работать |
| `… is locked: the trading key has not been handed over` | Сервер перезагрузился, агент упал или был убит и systemd снова запустил его, либо был выполнен `stop --lock` | `erpc worker start` |
| `port <n> is taken: …` | Тот же порт проверки работоспособности у другого воркера, который поддерживается запущенным, или этот порт слушает другая программа | Дайте приложению собственный порт в `erpc.toml`, затем выполните развёртывание снова |
| `release <id> runs, and its WAF did not come up: …` | WAF не начал слушать. Чаще всего `waf.port` занят другой программой | `erpc worker logs --waf`, затем освободите порт или измените `waf.port` и выполните развёртывание снова. Тем временем приложение работает |
| `waf.<key> …` (из `check`, `deploy`) | Ключ `[waf]` вне допустимых пределов, или `waf.port` ниже 1024 либо совпадает с портом `run.port`, SSH или проверки работоспособности | Исправьте `erpc.toml`. `erpc worker check` перечисляет все проблемы сразу |
| `the WAF's port <port> was not opened to …` (из `firewall allow`, `deny`, `sync`) | Изменение пустило бы кого-то нового по правилам WAF, которые сервер ещё не применяет | `erpc worker deploy`: он устанавливает новые правила, затем открывает порт |
| `<kind> line <id> did not become active in <n> minutes` | Линия ещё настраивается | Выполните развёртывание снова, чтобы подождать дольше |
| `OUT_OF_STOCK` | Свободного сервера этого тарифа в этом регионе нет | Выполните развёртывание с `--region <another>` |
| `the start may or may not have gone through: …` | Запрос ушёл, а ответ не вернулся, или ответ был 5xx, 408 или 429 | Снова выполните ту же команду: она отправит тот же запрос |
| `this purchase, or another of the account's, is still being made …` | Первый запрос ещё выполняется, или другая покупка аккаунта удерживает его блокировку | Немного погодя снова выполните ту же команду: она отправит тот же запрос |
| `… changed in 1Password since this command read it` | Другая машина тем временем записала элемент реестра | Снова выполните команду |
| `the shared RPC takes none of the account's API keys from this machine (<n> tried)` (из `secret put --from-account`, `erpc rpc call`, `erpc webhook run`) | Каждый из ключей аккаунта был отклонён с этой машины: срок действия ключей истёк, у аккаунта нет активного тарифа общего RPC или ключи ограничены другими адресами, например адресом сервера | [ERPC Web Dashboard](https://dashboard.erpc.global/ru) показывает дату окончания ключа и тариф и создаёт новый ключ. Для ключа, ограниченного адресом сервера: `erpc worker secret put ERPC_API_KEY`, введя значение вручную или передав его через конвейер |
| `shared: … HTTP 401` (bench) | Общий RPC отклонил ключ: нет активного тарифа общего RPC или ключ неверный | Проверьте тариф в панели или задайте `ERPC_API_KEY` |
| `shared: … HTTP 429` (bench) | Ограничение скорости тарифа | Используйте `--interval 150` или больше |

### Покупка, которую erpc не может поставить на учёт

Если сервер или линия могли быть запущены более ранним запросом, который erpc не смог поставить на учёт, проверьте серверы и линии вашего аккаунта в панели. Возьмите сервер в работу с помощью `erpc worker deploy --vps <ID>` или завершите то, что не нужно. Затем вручную удалите запись из `[env.<name>.starting]` в `erpc.toml`: у erpc нет флага, который её удаляет, и до тех пор та же команда отправляет тот же запрос.

## Если сервер мог быть захвачен

1. Сначала выполните `erpc worker backup off`, чтобы отозвать ключ доступа сервера к резервным копиям. `off` не отменяет того, что сервер уже прочитал.
2. Выведите средства с его торгового ключа и замените его секреты.
3. Пересоздайте сервер в [ERPC Web Dashboard](https://dashboard.erpc.global/ru) и выполните развёртывание снова.

Если при пересоздании изменился SSH-ключ хоста сервера, erpc отказывается работать с сервером, пока вы не обновите закреплённый ключ. Развёртывание возвращает код, но не состояние приложения, которое может восстановить только резервная копия ([Резервное копирование состояния приложения](https://erpc.global/ru/doc/erpc-cli/worker-status-and-billing/#резервное-копирование-состояния-приложения)).

## Чего erpc никогда не делает

- Не передаёт ключ, секрет или URL, содержащий один из них, в командной строке.
- Не записывает торговый ключ или секрет приложения в файл, за одним исключением: свой keystore на вашей машине, где каждый из них зашифрован вашей парольной фразой. На сервере `erpc worker backup on` оставляет собственные ключи резервного копирования сервера в файле, доступном только root.
- Не запускает ничего, не показав цену.
- Не оставляет сервер открытым: брандмауэр действует ещё до первого запуска приложения.
- Не подключается к серверу, ключ хоста которого не совпадает с закреплённым.

[Руководство по воркерам](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/worker.md) перечисляет все сообщения, включая сообщения WAF.
