テック技報最新号へ →
インフラ

Cloudflare Workers / Durable Objects の本番オンデマンド CPU・メモリプロファイリング

本番の Workers / Durable Objects に対して、ダッシュボード(Observability → Flamegraph)または API から CPU / メモリプロファイルを取り、対話的な flamegraph でボトルネックを特定できる。ローカル DevTools だけでは再現しにくい本番の負荷パターンをそのまま見られる。

@Cloudflare · 投稿 2026-10-09
#infra#cloudflare#workers#durable-objects#observability#profiling

どんなときに使う?

  • 本番だけ遅い・OOM 気味だが、ローカルでは再現しない
  • Durable Object の特定インスタンスだけ怪しい(名前指定でその isolate を狙える)
  • TypeScript ならソースマップを有効にしておくと関数名が読める

やり方(ダッシュボード)

  1. Cloudflare ダッシュボード → Build → Compute → Workers & Pages → 対象 Worker
  2. Observability タブ → Flamegraph
  3. CPU または memory、計測時間、デプロイ済みバージョンを選んで Capture Profile
  4. 表示された flamegraph で幅の広い矩形(=コストの大きい関数)を見る。テーブル表示も有用

前提: トラフィックが十分あるバージョンを選ぶ。アイドルに近い Worker はプロファイルが取れない(新規 isolate は起動しない=本番の実実行を見る設計)。

Durable Objects

Workers はステートレスなのでランダムな isolate が対象になる。DO は名前があるので、オブジェクト名を指定してそのプライマリ actor が載っているマシン上の isolate を直接プロファイルできる。

注意点

  • メモリプロファイルは「計測ウィンドウ中のアロケーション」だけ見える。起動時のアロケーションは取りこぼしやすい
  • 明示的に開始する必要がある(問題の瞬間を逃す可能性)。将来 continuous profiling が予定されている
  • 社内事例では、再帰的な JSON replacer の無駄や、無効化したつもりだった Prometheus 計装がメモリの 2/3 を食っていた、などを flamegraph で特定している

出典

X の元の投稿を開く