使用 erpc worker 執行與監看應用,並為其付費

erpc worker status 會顯示您的應用是否在執行,以及按小時計算的費用。每次啟動都會先顯示價格,而 erpc worker delete --release-server 會結束應用按小時使用的 gRPC、Shreds 與 Unlimited RPC,然後結束其按小時計費的伺服器。
本頁說明 ERPC CLI v0.1.0-rc.4,這是發行前版本。

檢查應用

$ 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 會顯示應用處於鎖定狀態還是正在執行、是哪一個 release,以及從何時開始。當您已登入時,它還會顯示該環境按小時計算的費用(每個項目都附上您的帳戶就該項目被收取的價格),以及您帳戶的 Credit 與其可維持多久。--json 在 hourly.charged 下提供相同的內容。
不在帳戶收費項目之中的項目,會被標示為不在其中,而不會被稱為已結束,因為該清單可能比啟動晚一分鐘。在沒有工作階段時,或無法讀取您帳戶的收費項目時,status 會顯示已記錄的內容。

控制應用

命令作用
erpc worker logs -n 200, logs -f應用與 agent 的日誌。行中的控制字元會以 ? 顯示
erpc worker start執行應用;當 worker 處於鎖定狀態時會傳送金鑰
erpc worker stop, stop --lock停止應用;--lock 還會將金鑰從記憶體中清除
erpc worker restart停止後再次啟動
erpc worker releases伺服器上保留的 release(deploy.keep_releases)
erpc worker rollback, rollback --to <release>回到上一個 release,或指定的 release。若該 release 的健康檢查連接埠現在屬於另一個正在執行的 worker,則會拒絕,並保持目前使用中的 release 不變
erpc worker api <PATH>從本機讀取應用的 API,而 API 仍留在伺服器的 loopback 上(變更時用 -X POST、-d '{...}')
erpc worker trades [--profit]應用在其伺服器上的交易
erpc worker list本機上的應用及各自部署的位置;--prune 會移除其 erpc.toml 已不存在的應用
應用的 API_TOKEN 在這裡讀取,並透過標準輸入傳到伺服器,不會出現在任何命令列或任何日誌中。每個 worker 命令都接受 --env <name>(預設為 default)與 --json,但 secret unlock 與 secret lock 例外:它們處理的是本機的金鑰庫而非某個應用,因此不接受 --env。從任何位置執行時,命令會依 erpc 所知的名稱找到其應用;secret put、secret rm、key import、firewall allow 與 firewall deny 只透過 --dir 指定應用。

按小時計費的運作方式

  • 每次啟動都會先顯示價格。在終端機中,只有在得到確認後才會啟動;使用 --yes 時,指明要啟動什麼的命令列本身就是確認。
  • 按小時計費的產品以 ERPC Credit 支付,ERPC Credit 需事先購買;Credit 不足以支付的啟動會被拒絕。價格請見價格與 ERPC Web Dashboard。
  • 新的 VPS 一經指定就會被記錄下來,此時它尚未就緒。下一次部署會接手它,而不會再購買另一台。
  • 對 deploy 而言,沒有得到回應的啟動會再次傳送,絕不會作為新的啟動傳送。其請求鍵會保留在記錄中([env.<name>.starting]),因此再次執行同一命令會傳送同一個請求。收到某些回應之後,它會一直保留,直到您手動移除為止(erpc 無法記錄的購買)。erpc worker run 不保留記錄,因此它的下一次執行會發出新的請求。
  • 一次只部署一個環境。同時開始的同一環境的兩次部署可能會購買兩份,這不受支援。
  • 線路是否仍然存在,取決於帳戶被收費的項目。不按小時計費的線路絕不會由 erpc 結束:請在儀表板中結束它。

移除應用

erpc worker delete 會移除 worker。erpc worker delete --release-server 還會結束其線路,然後結束其按小時計費的伺服器。無法結束的項目會保留在記錄中,不按小時計費的線路則會被列出名稱,以便在儀表板中結束。
  • 單純的刪除會拒絕已購買但從未連上的 VPS,因為那樣會在它仍被收費時遺忘它。單純刪除一台已連上的按小時計費 VPS,會在它仍被收費時將其從記錄中移除,並對此發出警告。
  • 使用 --forget 時,erpc 不會嘗試連線已無法連線的伺服器;--forget-line <id> 則會將在 erpc 之外結束的線路從記錄中移除。

從伺服器測量 RPC 延遲

erpc worker bench 從環境的伺服器為 RPC 呼叫計時:ERPC 的共享 RPC、其 Unlimited RPC,以及其他任何 RPC,並排比較。伺服器上的 agent 為每次呼叫計時,因此這些數字就是應用實際得到的。
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 接受 getSlot、getBlockHeight、getLatestBlockhash 或 getHealth。
  • --no-shared 會排除共享 RPC。--url 的值可以是 URL 本身、op://…、keychain:… 或 keystore:… 參照(指向保存含有金鑰之 URL 的位置;絕不能是交易金鑰的項目,此類參照會被拒絕),或是 -(從標準輸入讀取,或提示您以不顯示的方式輸入)。超過六個端點會被拒絕。
  • bench 會輸出 p50、p90、p99、最小值與最大值、失敗次數及第一個失敗原因,以及每個回應比同一輪中最新的回應落後多少個 slot。
  • 金鑰只透過標準輸入傳到伺服器,表格顯示協定、主機與連接埠。

備份應用的狀態資料

erpc worker backup on 會每天將應用的狀態資料備份到 ERPC Global Storage,由 restic 加密,時間為伺服器時間的 --at,並在其後 30 分鐘內執行。需要儲存方案(erpc storage buy 5)。
  • 備份的內容是應用的狀態資料 /var/lib/private/erpc-worker-<id>。release 不會備份,因為部署會將它們放回。Redis 與 PostgreSQL 的資料不在涵蓋範圍內。
  • 伺服器無法刪除快照。它從不持有 erpc 的工作階段、帳戶的管理金鑰或帳戶的主密碼。
  • 被接管的伺服器可以讀取帳戶中每台機器的快照(包括本機的);在 off 之後仍保有儲存庫的金鑰(restic 從不更換此金鑰);以另一台機器的名稱新增快照,因此發生接管之後,請檢查 restore latest 會選中哪一個快照;以及填滿帳戶的儲存空間,這會使每台機器的備份都停止。erpc worker backup off 會先撤銷伺服器的存取金鑰,無論伺服器是否回應。
  • restic 會在 worker 執行期間按檔案當下的樣子複製,因此資料庫可能需要自己的傾印,才能恢復為一致的狀態。伺服器關機期間錯過的執行,會在伺服器重新上線後執行。
  • erpc worker backup off、status 與 now 分別用於停止備份、回報備份情況與執行備份。off 之後快照仍會保留,erpc backup prune --host 可精簡舊的快照。
在本機上執行 erpc backup init 之後,從本機恢復:
bash
erpc backup restore latest --from-host erpc-worker-<id>-<tag> --path /var/lib/private/erpc-worker-<id> --target ./restored

多個環境與多台機器

  • 同一台伺服器上的多個 worker 各自作為獨立的單元執行,共用伺服器的防火牆表,且各自只開放自己的連接埠。
  • 一個應用可以有多個環境([env.staging]、[env.prod]),每個環境都有自己的伺服器與線路。
  • 環境可以將其伺服器資訊保存在 1Password,而不是 erpc.toml 中。如此一來,任何登入該保險庫、並擁有應用儲存庫的機器,都能執行所有命令;這類應用中的 keychain: 與 keystore: 參照會收到警告,因為其他機器無法讀取它們。當 erpc login 將工作階段保存在那裡時,新環境會將其資訊保存在 1Password;deploy --vault <vault-id> 指定另一個保險庫,deploy --inline 則將資訊保存在 erpc.toml 中。