1446 字
7 分鐘

Workers RPC 追蹤怎麼看?用 traces 找跨 Worker 與 Durable Objects 延遲

Worker 透過 JavaScript RPC 呼叫另一個 Worker 或 Durable Object 時,單看 caller log 很難知道時間花在哪裡:是建立 session、執行 method、進入 callee,還是 callee callback 回到另一個 Worker?Cloudflare 在 2026 年 9 月 17 日更新 Workers traces,讓追蹤可以跨 Worker boundary 和 Durable Objects 看見 RPC session、invocation 與 method call。

直接答案是:先在 Wrangler 設定開啟 observability.traces.enabled,部署後用一個可重現的 RPC 請求產生 trace,再依 root span、RPC session、individual call 和 callee invocation 的順序閱讀。這項自動 instrumentation 不需要改應用程式碼或另裝 observability SDK,但它仍不是取代業務 log、錯誤追蹤或負載指標的萬用方案。

本文依 Cloudflare ChangelogSpans and attributes 文件 整理,沒有在帳號部署或查詢 dashboard。

這次更新補上哪一段觀測#

更新前,trace 會在 caller 的 RPC boundary 停下來;現在 dashboard 可以把 caller-side session 與 method calls,連同 callee invocation、nested calls 和 callbacks 放在同一條關聯裡:

Span所在位置看什麼
RPC sessioncaller side一個 RPC session 的生命週期,以及重用該 session 的呼叫
RPC callcaller 或 callee side單一 method call 或 property access
RPC invocationcallee side目標 Worker 或 Durable Object 中的一次 RPC invocation
Root span觸發請求的 Worker 或 handler整體 outcome、CPU time、wall time 與 request 關聯

文件指出,caller 和 callee 的 span 會使用各自 Worker 或 Durable Object 的 execution color;顏色切換能幫你辨認執行邊界。這不是把所有程式碼函式都自動變成自訂 span,而是把 Cloudflare 已支援的 runtime 與 RPC 邊界呈現得更完整。

在 Wrangler 開啟 traces#

JSON 設定可以加入:

{
"$schema": "./node_modules/wrangler/config-schema.json",
"observability": {
"traces": {
"enabled": true
}
}
}

TOML 寫法則是:

[observability.traces]
enabled = true

設定要部署到實際產生 RPC 流量的 Worker。只在本機檔案改好,或只對 caller 開啟卻沒有部署,dashboard 都可能看不到你預期的 trace。Cloudflare 的更新說明表示,這項 instrumentation 不需要你改 handler 或安裝 SDK;若需要應用程式業務欄位,仍要另外保留結構化 log 或自訂觀測方案。

Dashboard 的閱讀順序#

不要一打開 trace 就先盯著最長的 method 名稱。用下面順序比較容易把延遲定位到責任邊界:

  1. 先看 root span:確認 trigger、Worker version、region、cloudflare.outcome、CPU time 和 wall time,先排除這其實不是你以為的 deployment。
  2. 找 RPC session:看 session 的起訖範圍與底下是否重用了多個呼叫。長 session 不必然是問題,但能提示你不要把每個 method 當成獨立連線。
  3. 對照 RPC call:看 jsrpc.methodjsrpc.operationjsrpc.target_kind,區分 method call 與 property access,以及實際目標類型。
  4. 沿著顏色邊界到 invocation:進入 callee 後,分辨時間是在目標 Worker/Durable Object 的 invocation、nested call,還是 callback 回程。
  5. 最後才看應用程式 log:用 invocation id、version、Ray ID 或你自己的 request id 對照錯誤和業務事件,不要只靠時間戳猜兩次請求是不是同一筆。

RPC call 的 callee-side span 會提供 jsrpc.caller_span_id,可用來把目標端的 span 對回 caller-side call。當兩個事件時間非常接近時,文件也提供 cloudflare.invocation.sequence.number 協助區分先後。

用 traces 分辨四種常見延遲#

觀察結果比較合理的下一步
root wall time 長,但 RPC session 很短先查 caller 其他 fetch、binding 或等待,不要把問題全推給 RPC
session 內有很多重複的 call spans檢查 client 是否反覆取得 property 或重複呼叫同一個 method
caller call 很快,callee invocation 很長查目標 Worker/Durable Object 的 CPU、資料庫、外部 fetch 與 application log
callee 完成後 callback 又進入另一個 boundary沿著 nested/callback spans 逐段比對,不要只看第一個 call 的 duration

Trace 能讓執行邊界可見,但不會自動告訴你「這個 method 為什麼在產品上被呼叫」。如果要回答租戶、訂單、工作 id 或業務動作,仍要在不洩漏敏感資料的前提下建立可關聯的 application log。

沒看到 RPC trace 時先查什麼#

啟用設定後沒有資料,不要立刻改 RPC 實作。先依順序排查:

  1. 確認 observability.traces 的檔案格式和縮排,並檢查真正部署的 Worker version。
  2. 確認請求真的走 JavaScript RPC,而不是普通 HTTP、service binding 的另一種介面或本機 mock。
  3. 用單一、可重複的 caller → callee 請求產生流量,再從 root trace 往下找;不要用同時大量請求的 production 峰值當第一個案例。
  4. 檢查 dashboard 的時間範圍、Worker 名稱、region 和 deployment version 是否選對。
  5. 若只有部分 span,對照 Cloudflare 支援的 spans 與 attributesTraces known limitations,不要把未列出的 runtime 行為當成一定會出現。

如果要在 CI 重現跨 Worker 情境,可以參考 Workers integration test harness 建立接近 production build 的測試;但本機測試通過,不代表遠端 dashboard 的收集、版本與流量條件已經驗證。

常見問題#

Q: 開啟 traces 需要改 JavaScript 或安裝 SDK 嗎?#

A: Cloudflare 目前的 automatic tracing instrumentation 不需要應用程式碼變更或額外 SDK。你仍要正確部署設定,並用實際流量驗證 trace 是否出現。

Q: RPC session span 就是一個 RPC method 嗎?#

A: 不是。session span 覆蓋 caller-side session 的生命週期;個別 method 或 property access 會以 RPC call span 呈現,目標端則有 RPC invocation span。

Q: 看到 wall time 很長,就代表 CPU 不夠嗎?#

A: 不一定。root span 同時提供 CPU time 與 wall time;差異可能來自等待 RPC、外部 fetch、資料庫或其他 I/O。先沿著 spans 找等待邊界,再決定要查 CPU 或網路。

Q: traces 可以取代 application log 嗎?#

A: 不行。traces 適合回答執行邊界和時間分布;租戶、訂單、業務動作等產品語意仍要由你自己的結構化 log 或 metrics 提供,並自行處理敏感資料。

參考資料:

Cloudflare Changelog:Workers traces 加入 JavaScript RPC session spans

Cloudflare Workers:Spans and attributes

Workers RPC 追蹤怎麼看?用 traces 找跨 Worker 與 Durable Objects 延遲
https://laplusda.com/posts/cloudflare-workers-rpc-trace-session-spans/
作者
Zero
發佈於
2026-09-18
許可協議
CC BY-NC-SA 4.0
這篇文章有幫助嗎?

回報錯字、失效連結,或告訴我你想看的延伸主題。