---
title: "Khắc phục lỗi của erpc worker"
description: "Các thông báo lỗi erpc worker thường gặp nhất, ý nghĩa và cách xử lý, cách khôi phục server có thể đã bị chiếm quyền, và những gì erpc không bao giờ làm."
canonical: "https://erpc.global/vi/doc/erpc-cli/worker-troubleshooting/"
locale: "vi"
---

# Khắc phục lỗi của erpc worker

Tìm phần đầu của thông báo mà `erpc worker` đã in ra, rồi làm theo những gì hàng tương ứng ghi.

Trang này mô tả ERPC CLI `v0.1.0-rc.4`, một bản pre-release.

## Thông báo lỗi và cách xử lý

Các lỗi của worker dùng mã lỗi và trạng thái thoát của erpc: xem [Lỗi và mã thoát](https://erpc.global/vi/doc/erpc-cli/commands/#lỗi-và-mã-thoát).

| Thông báo (phần đầu) | Lý do | Cách xử lý |
| --- | --- | --- |
| `<app> cannot start without <SETTING>` | `run.requires` nêu một thiết lập mà chưa có gì đặt giá trị cho nó | `erpc worker secret put <SETTING>`, đặt nó trong `[vars]`, hoặc triển khai với đường truyền cung cấp thiết lập đó (`--grpc`, `--unlimited`) |
| `your key was added but does not get in` | SSH agent đã không ký: 1Password bị khóa, hoặc yêu cầu của nó không được cho phép | Mở khóa 1Password, cho phép yêu cầu, rồi chạy lại cùng lệnh. Lệnh sẽ tiếp tục |
| `1Password could not …: authorization timeout` | 1Password đã yêu cầu phê duyệt và không ai trả lời | Cho phép yêu cầu trong 1Password, rồi chạy lại |
| `<NAME> is empty; nothing was kept` | `secret put` đã đọc một đầu vào chuẩn trống: shell không phải là terminal | Chạy lệnh trong terminal, hoặc pipe giá trị vào |
| `the keystore is locked, and nobody is at a terminal …` | Một lệnh không có terminal cần keystore, và không có trạng thái mở khóa nào được giữ | `erpc worker secret unlock` tại terminal, rồi chạy lại lệnh |
| `nothing is kept under keystore:… on this machine` | Giá trị đã được lưu trong keystore của một máy khác | `erpc worker secret put <NAME> --replace` tại máy này; với khóa, hãy mang toàn bộ thư mục `keystore` của máy đó cùng cụm mật khẩu của nó sang |
| `release <id> failed: …; the server went back to <previous>` | Release mới không vượt qua health check | Xem `erpc worker logs`. Release trước đó vẫn đang chạy |
| `… is locked: the trading key has not been handed over` | Server đã khởi động lại, agent bị lỗi hoặc bị kill và systemd đã khởi động lại nó, hoặc `stop --lock` | `erpc worker start` |
| `port <n> is taken: …` | Một worker khác được giữ ở trạng thái chạy có cùng cổng health check, hoặc một chương trình khác đang lắng nghe trên cổng đó | Cấp cho ứng dụng một cổng riêng trong `erpc.toml`, rồi triển khai lại |
| `release <id> runs, and its WAF did not come up: …` | WAF không bắt đầu lắng nghe. Thường gặp nhất là một chương trình khác đang dùng `waf.port` | `erpc worker logs --waf`, sau đó giải phóng cổng hoặc đổi `waf.port`, rồi triển khai lại. Trong lúc đó ứng dụng vẫn chạy |
| `waf.<key> …` (từ `check`, `deploy`) | Một khóa `[waf]` nằm ngoài giới hạn của nó, hoặc `waf.port` thấp hơn 1024, hoặc trùng với `run.port`, cổng SSH hay cổng health check | Sửa `erpc.toml`. `erpc worker check` liệt kê mọi vấn đề cùng một lúc |
| `the WAF's port <port> was not opened to …` (từ `firewall allow`, `deny`, `sync`) | Thay đổi này sẽ cho người mới vào theo các quy tắc WAF mà server chưa chạy | `erpc worker deploy`: lệnh này đưa các quy tắc mới vào hoạt động, rồi mở cổng |
| `<kind> line <id> did not become active in <n> minutes` | Đường truyền vẫn đang được chuẩn bị | Triển khai lại để chờ thêm |
| `OUT_OF_STOCK` | Không có server nào thuộc gói đó còn trống trong khu vực đó | Triển khai với `--region <another>` |
| `the start may or may not have gone through: …` | Request đã được gửi đi và không có phản hồi trả về, hoặc phản hồi là 5xx, 408 hoặc 429 | Chạy lại cùng lệnh: lệnh sẽ gửi cùng request đó |
| `this purchase, or another of the account's, is still being made …` | Request đầu tiên vẫn đang được xử lý, hoặc một giao dịch mua khác của tài khoản đang giữ lock của nó | Chạy lại cùng lệnh sau một lát: lệnh sẽ gửi cùng request đó |
| `… changed in 1Password since this command read it` | Một máy khác đã ghi vào mục trong danh mục trong lúc đó | Chạy lại lệnh |
| `the shared RPC takes none of the account's API keys from this machine (<n> tried)` (từ `secret put --from-account`, `erpc rpc call`, `erpc webhook run`) | Từng khóa của tài khoản đều bị từ chối từ máy này: các khóa đã hết hạn, tài khoản không có gói RPC dùng chung đang hoạt động, hoặc các khóa bị giới hạn cho các địa chỉ khác, chẳng hạn địa chỉ của một server | [ERPC Web Dashboard](https://dashboard.erpc.global/vi) hiển thị gói và ngày hết hạn của một khóa, và tạo khóa mới. Với khóa bị giới hạn cho địa chỉ của server: `erpc worker secret put ERPC_API_KEY`, nhập trực tiếp hoặc pipe vào |
| `shared: … HTTP 401` (bench) | RPC dùng chung đã từ chối khóa: không có gói RPC dùng chung đang hoạt động, hoặc khóa sai | Kiểm tra gói trên dashboard, hoặc đặt `ERPC_API_KEY` |
| `shared: … HTTP 429` (bench) | Giới hạn tốc độ của gói | Dùng `--interval 150` trở lên |

### Giao dịch mua mà erpc không thể ghi nhận

Khi một server hoặc một đường truyền có thể đã được kích hoạt bởi một request trước đó mà erpc không thể ghi nhận, hãy xem các server và đường truyền của tài khoản bạn trong dashboard. Tiếp nhận một server bằng `erpc worker deploy --vps <ID>`, hoặc kết thúc những gì không cần. Sau đó xóa thủ công mục trong `[env.<name>.starting]` của `erpc.toml`: erpc không có flag nào bỏ mục đó, và cho đến lúc đó, cùng lệnh sẽ gửi cùng request.

## Nếu server có thể đã bị chiếm quyền

1. Chạy `erpc worker backup off` trước tiên, để thu hồi khóa truy cập sao lưu của server. `off` không hoàn tác những gì server đã đọc được trước đó.
2. Chuyển tiền khỏi khóa trading của server, và thay các secret của nó.
3. Build lại server từ [ERPC Web Dashboard](https://dashboard.erpc.global/vi), rồi triển khai lại.

Nếu việc build lại đã thay đổi khóa host SSH của server, erpc sẽ từ chối server đó cho đến khi bạn cập nhật khóa đã ghim. Một lần triển khai đưa mã nguồn trở lại, không phải dữ liệu trạng thái của ứng dụng, thứ chỉ có thể được khôi phục từ một bản sao lưu ([Sao lưu dữ liệu trạng thái của ứng dụng](https://erpc.global/vi/doc/erpc-cli/worker-status-and-billing/#sao-lưu-dữ-liệu-trạng-thái-của-ứng-dụng)).

## Những gì erpc không bao giờ làm

- Đặt một khóa, một secret, hoặc một URL có chứa một trong số đó lên dòng lệnh.
- Ghi khóa trading hoặc secret của ứng dụng vào tệp, với một ngoại lệ: keystore của nó trên máy của bạn, nơi mỗi thứ được mã hóa bằng cụm mật khẩu của bạn. Trên server, `erpc worker backup on` để các khóa sao lưu của chính server trong một tệp chỉ root truy cập được.
- Kích hoạt bất cứ thứ gì mà không hiển thị giá của nó.
- Để server ở trạng thái mở: tường lửa có hiệu lực trước khi ứng dụng khởi động lần đầu.
- Truy cập một server có khóa host không khớp với khóa đã ghim.

[Hướng dẫn worker](https://github.com/elsoul/erpc-cli/blob/v0.1.0-rc.4/docs/worker.md) liệt kê mọi thông báo, kể cả các thông báo của WAF.
