---
title: "erpc worker 실패 해결하기"
description: "가장 자주 보는 erpc worker 오류 메시지와 각각의 의미 및 대처 방법, 탈취되었을 수 있는 서버를 복구하는 방법, erpc가 절대 하지 않는 일을 설명합니다."
canonical: "https://erpc.global/ko/doc/erpc-cli/worker-troubleshooting/"
locale: "ko"
---

# erpc worker 실패 해결하기

`erpc worker`가 출력한 메시지의 시작 부분을 찾아, 해당 행에 적힌 대로 하세요.

이 페이지는 프리릴리스인 ERPC CLI `v0.1.0-rc.4`를 설명합니다.

## 오류 메시지와 대처 방법

worker 실패에는 erpc의 코드와 종료 상태가 사용됩니다. [오류와 종료 코드](https://erpc.global/ko/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 …` | 터미널 없이 실행된 명령에 키스토어가 필요한데, 유지되고 있는 잠금 해제가 없음 | 터미널에서 `erpc worker secret unlock`을 실행한 뒤 명령을 다시 실행하세요 |
| `nothing is kept under keystore:… on this machine` | 값이 다른 머신의 키스토어에 보관되어 있음 | 이 머신에서 `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: …` | 계속 실행되도록 유지되는 다른 worker가 같은 헬스 체크 포트를 쓰고 있거나, 다른 프로그램이 그 포트에서 수신 대기 중임 | `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/ko)에서 키의 만료일과 요금제를 확인하고 새 키를 만들 수 있습니다. 서버의 주소로 제한된 키라면 `erpc worker secret put ERPC_API_KEY`를 실행하고 키를 입력하거나 파이프로 넣으세요 |
| `shared: … HTTP 401` (벤치) | 공유 RPC가 키를 거부함: 활성 공유 RPC 요금제가 없거나 키가 잘못됨 | 대시보드에서 요금제를 확인하거나 `ERPC_API_KEY`를 설정하세요 |
| `shared: … HTTP 429` (벤치) | 요금제의 속도 제한 | `--interval 150` 이상을 사용하세요 |

### erpc가 기록하지 못한 구매

이전 요청이 서버나 회선을 시작했을 수 있는데 erpc가 그것을 기록하지 못했다면, 대시보드에서 계정의 서버와 회선을 확인하세요. 서버는 `erpc worker deploy --vps <ID>`로 이어받고, 원하지 않는 것은 종료하세요. 그런 다음 `erpc.toml`의 `[env.<name>.starting]`에서 해당 항목을 직접 제거하세요. erpc에는 이 항목을 지우는 플래그가 없으며, 제거하기 전까지는 같은 명령이 같은 요청을 보냅니다.

## 서버가 탈취되었을 수 있다면

1. 먼저 `erpc worker backup off`를 실행해 서버의 백업 액세스 키를 폐기하세요. `off`는 서버가 이미 읽은 내용을 되돌리지 않습니다.
2. 서버의 트레이딩 키에서 자금을 옮기고, 서버의 시크릿을 교체하세요.
3. [ERPC Web Dashboard](https://dashboard.erpc.global/ko)에서 서버를 리빌드한 뒤 다시 배포하세요.

리빌드로 서버의 SSH 호스트 키가 바뀌었다면, 고정된 키를 업데이트할 때까지 erpc는 그 서버를 거부합니다. 배포는 코드를 되돌려 놓지만 앱의 상태 데이터는 되돌려 놓지 않으며, 상태 데이터는 백업으로만 복원할 수 있습니다([앱의 상태 데이터 백업](https://erpc.global/ko/doc/erpc-cli/worker-status-and-billing/#앱의-상태-데이터-백업)).

## erpc가 절대 하지 않는 일

- 키, 시크릿, 또는 그것을 담은 URL을 명령줄에 올리는 일.
- 트레이딩 키나 앱의 시크릿을 파일에 쓰는 일. 단 하나의 예외는 사용자 머신에 있는 erpc의 키스토어로, 여기서는 각 값이 사용자의 패스프레이즈로 암호화됩니다. 서버에서는 `erpc worker backup on`이 서버 자체의 백업 키를 root 전용 파일에 남깁니다.
- 가격을 보여 주지 않고 무언가를 시작하는 일.
- 서버를 열어 두는 일: 앱이 처음 시작되기 전에 방화벽이 적용됩니다.
- 호스트 키가 고정된 키와 일치하지 않는 서버에 접속하는 일.

[worker 가이드](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/worker.md)에는 WAF의 메시지를 포함해 모든 메시지가 나와 있습니다.
