Chạy, theo dõi và thanh toán cho ứng dụng với erpc worker

erpc worker status cho biết ứng dụng của bạn có đang chạy không và chi phí theo giờ của nó. Mỗi lần kích hoạt đều hiển thị giá trước, và erpc worker delete --release-server kết thúc gRPC, Shreds và Unlimited RPC mà ứng dụng dùng theo giờ, rồi đến server theo giờ của ứng dụng.
Trang này mô tả ERPC CLI v0.1.0-rc.4, một bản pre-release.

Kiểm tra ứng dụng

$ erpc worker status --env prod
api-prod on 203.0.113.10: running, release 20261101T093000Z-1a2b3c4d, pid 4217, up 2h 14m
  current 20261101T093000Z-1a2b3c4d, previous 20261028T171500Z-9f8e7d6c, 2 releases kept
  WAF: listening on port 8080, forwarding to 127.0.0.1:3000, since 2026-11-01T09:30:12Z; requests 5120, forwarded 5043, blocked 71, connections refused 12, app errors 6, addresses banned now 1
  `erpc worker delete --release-server --env prod` ends what this app is charged for.
status cho biết ứng dụng đang bị khóa hay đang chạy, release nào, và từ khi nào. Khi bạn đã đăng nhập, lệnh này còn hiển thị chi phí theo giờ của môi trường, từng mục kèm mức giá mà tài khoản của bạn bị tính cho mục đó, cùng credit của tài khoản và thời gian credit đó còn đủ dùng. --json chứa cùng thông tin đó dưới hourly.charged.
Một mục không nằm trong các khoản phí của tài khoản được báo là không nằm trong đó, chứ không bị gọi là đã kết thúc, vì danh sách đó có thể chậm một phút so với một lần kích hoạt. Khi không có phiên, hoặc khi không đọc được các khoản phí của tài khoản, status cho biết những gì đã được ghi nhận.

Điều khiển ứng dụng

LệnhChức năng
erpc worker logs -n 200, logs -fLog của ứng dụng và của agent. Ký tự điều khiển trong một dòng được in thành ?
erpc worker startChạy ứng dụng, gửi khóa khi worker bị khóa
erpc worker stop, stop --lockDừng ứng dụng; --lock còn xóa khóa khỏi bộ nhớ
erpc worker restartDừng rồi khởi động lại ứng dụng
erpc worker releasesCác release được giữ trên server (deploy.keep_releases)
erpc worker rollback, rollback --to <release>Quay về release trước đó, hoặc release được chỉ định. Bị từ chối, và release đang dùng được giữ nguyên, khi cổng health check của release đó hiện thuộc về một worker khác đang chạy
erpc worker api <PATH>Đọc API của ứng dụng từ máy này, trong khi API vẫn nằm trên loopback của server (-X POST, -d '{...}' để thay đổi)
erpc worker trades [--profit]Các giao dịch của ứng dụng trên server của nó
erpc worker listCác ứng dụng trên máy này và nơi mỗi ứng dụng được triển khai; --prune bỏ những ứng dụng mà erpc.toml của chúng không còn nữa
API_TOKEN của ứng dụng được đọc tại đây và đến server qua đầu vào chuẩn, không qua dòng lệnh nào và không nằm trong journal nào. Mọi lệnh worker đều nhận --env <name> (mặc định default) và --json, ngoại trừ secret unlock và secret lock: hai lệnh này liên quan đến keystore của máy này chứ không phải một ứng dụng, nên không nhận --env. Khi chạy từ bất kỳ đâu, một lệnh tìm ứng dụng của nó theo tên mà erpc biết; secret put, secret rm, key import, firewall allow và firewall deny chỉ nhận ứng dụng qua --dir.

Cách tính phí theo giờ

  • Mỗi lần kích hoạt đều hiển thị giá trước. Tại terminal, việc kích hoạt chỉ diễn ra sau khi bạn đồng ý; với --yes, chính dòng lệnh nêu tên thứ cần kích hoạt là sự đồng ý.
  • Sản phẩm theo giờ được trả bằng ERPC Credit, được mua trước, và một lần kích hoạt mà credit không đủ chi trả sẽ bị từ chối. Giá được niêm yết tại Bảng giá và trên ERPC Web Dashboard.
  • Một VPS mới được ghi nhận ngay khi được nêu tên, trước khi sẵn sàng. Lần triển khai tiếp theo sẽ tiếp nhận VPS đó thay vì mua một VPS khác.
  • Với deploy, một lần kích hoạt không nhận được phản hồi sẽ được gửi lại, không bao giờ dưới dạng một lần kích hoạt mới. Khóa request của nó vẫn được ghi nhận ([env.<name>.starting]), nên chạy lại cùng lệnh sẽ gửi cùng request. Sau một số phản hồi, khóa này vẫn ở đó cho đến khi bạn xóa thủ công (Giao dịch mua mà erpc không thể ghi nhận). erpc worker run không giữ bản ghi nào, nên lần chạy tiếp theo của nó tạo một request mới.
  • Triển khai lần lượt từng môi trường. Hai lần triển khai cùng một môi trường được bắt đầu cùng lúc có thể mua hai lần, và điều đó không được hỗ trợ.
  • Một đường truyền còn tồn tại hay không được quyết định bởi những gì tài khoản bị tính phí. erpc không bao giờ kết thúc một đường truyền không được tính phí theo giờ: hãy kết thúc nó trong dashboard.

Gỡ ứng dụng

erpc worker delete xóa worker. erpc worker delete --release-server còn kết thúc các đường truyền của ứng dụng, rồi đến server theo giờ. Những gì không thể kết thúc vẫn được ghi nhận, và một đường truyền không được tính phí theo giờ sẽ được nêu tên, để bạn kết thúc trong dashboard.
  • Một lệnh delete thông thường từ chối một VPS đã mua nhưng chưa từng truy cập được, vì làm vậy sẽ quên VPS đó trong khi nó vẫn bị tính phí. Một lệnh delete thông thường đối với VPS theo giờ đã truy cập được sẽ xóa VPS đó khỏi bản ghi trong khi nó vẫn bị tính phí, và cảnh báo về điều đó.
  • --forget không cố truy cập một server không còn truy cập được nữa, và --forget-line <id> xóa khỏi bản ghi một đường truyền đã được kết thúc bên ngoài erpc.

Đo độ trễ RPC từ server

erpc worker bench đo thời gian các lệnh gọi RPC từ server của môi trường: RPC dùng chung của ERPC, Unlimited RPC của ERPC, và bất kỳ RPC nào khác, đặt cạnh nhau. Agent trên server đo thời gian từng lệnh gọi, nên các con số là những gì ứng dụng nhận được.
bash
erpc worker bench                                  # getSlot: shared RPC vs the Unlimited RPC
erpc worker bench --rounds 300 --interval 150      # for a plan that limits calls per second
erpc worker bench --url other=op://<vault-id>/<item-id>/url   # another provider's RPC
  • --method nhận getSlot, getBlockHeight, getLatestBlockhash hoặc getHealth.
  • --no-shared bỏ RPC dùng chung ra khỏi phép đo. Giá trị --url có thể là chính URL, một tham chiếu op://…, keychain:… hoặc keystore:… (trỏ đến nơi lưu một URL có chứa khóa; không bao giờ trỏ đến mục của khóa trading, điều này bị từ chối), hoặc - (đọc từ đầu vào chuẩn, hoặc hỏi để bạn nhập ẩn). Nhiều hơn sáu endpoint sẽ bị từ chối.
  • Bench in ra p50, p90, p99, min và max, các lần thất bại kèm lý do đầu tiên, và mỗi câu trả lời chậm hơn câu trả lời mới nhất trong cùng vòng bao nhiêu slot.
  • Các khóa chỉ đến server qua đầu vào chuẩn, và bảng hiển thị scheme, host và cổng.

Sao lưu dữ liệu trạng thái của ứng dụng

erpc worker backup on sao lưu dữ liệu trạng thái của ứng dụng mỗi ngày lên ERPC Global Storage, được mã hóa bằng restic, vào lúc --at theo giờ của server và trong vòng 30 phút sau đó. Cần có một gói storage (erpc storage buy 5).
  • Những gì được sao lưu là dữ liệu trạng thái của ứng dụng, /var/lib/private/erpc-worker-<id>. Các release thì không, vì một lần triển khai sẽ đưa chúng trở lại. Dữ liệu Redis và PostgreSQL không được bao gồm.
  • Server không thể xóa snapshot. Server không bao giờ giữ phiên erpc, khóa quản trị của tài khoản hay mật khẩu chính của tài khoản.
  • Một server bị chiếm quyền có thể đọc snapshot của mọi máy trong tài khoản, kể cả máy này; giữ lại khóa của repository, thứ mà restic không bao giờ thay đổi, sau off; thêm snapshot dưới tên của một máy khác, vì vậy sau khi điều đó xảy ra, hãy kiểm tra restore latest chọn gì; và làm đầy storage của tài khoản, khiến việc sao lưu của mọi máy dừng lại. erpc worker backup off thu hồi khóa truy cập của server trước tiên, dù server có phản hồi hay không.
  • restic sao chép tệp nguyên trạng trong khi worker đang chạy, nên một cơ sở dữ liệu có thể cần bản dump riêng để được khôi phục ở trạng thái nhất quán. Một lần chạy bị lỡ trong lúc server tắt sẽ chạy khi server hoạt động trở lại.
  • erpc worker backup off, status và now lần lượt dừng, báo cáo và chạy việc sao lưu. Các snapshot vẫn còn sau off, và erpc backup prune --host dọn bớt các snapshot cũ.
Khôi phục từ máy này, sau khi chạy erpc backup init trên máy này:
bash
erpc backup restore latest --from-host erpc-worker-<id>-<tag> --path /var/lib/private/erpc-worker-<id> --target ./restored

Nhiều môi trường và nhiều máy

  • Nhiều worker trên cùng một server: mỗi worker chạy như một unit riêng, dùng chung bảng tường lửa của server, và mỗi worker chỉ mở cổng của riêng mình.
  • Một ứng dụng có thể có nhiều môi trường ([env.staging], [env.prod]), mỗi môi trường có server và đường truyền riêng.
  • Một môi trường có thể lưu thông tin server của nó trong 1Password thay vì erpc.toml. Khi đó, bất kỳ máy nào đã đăng nhập vào vault đó, cùng với repository của ứng dụng, đều có thể chạy mọi lệnh; các tham chiếu keychain: và keystore: trong một ứng dụng như vậy sẽ bị cảnh báo, vì máy khác không thể đọc chúng. Một môi trường mới lưu thông tin trong 1Password khi erpc login lưu phiên ở đó; deploy --vault <vault-id> chỉ định một vault khác, và deploy --inline lưu thông tin trong erpc.toml.