Cloudflare Workers / Durable Objects の本番オンデマンド CPU・メモリプロファイリング
本番の Workers / Durable Objects に対して、ダッシュボード(Observability → Flamegraph)または API から CPU / メモリプロファイルを取り、対話的な flamegraph でボトルネックを特定できる。ローカル DevTools だけでは再現しにくい本番の負荷パターンをそのまま見られる。
どんなときに使う?
- 本番だけ遅い・OOM 気味だが、ローカルでは再現しない
- Durable Object の特定インスタンスだけ怪しい(名前指定でその isolate を狙える)
- TypeScript ならソースマップを有効にしておくと関数名が読める
やり方(ダッシュボード)
- Cloudflare ダッシュボード → Build → Compute → Workers & Pages → 対象 Worker
- Observability タブ → Flamegraph
- CPU または memory、計測時間、デプロイ済みバージョンを選んで Capture Profile
- 表示された flamegraph で幅の広い矩形(=コストの大きい関数)を見る。テーブル表示も有用
前提: トラフィックが十分あるバージョンを選ぶ。アイドルに近い Worker はプロファイルが取れない(新規 isolate は起動しない=本番の実実行を見る設計)。
Durable Objects
Workers はステートレスなのでランダムな isolate が対象になる。DO は名前があるので、オブジェクト名を指定してそのプライマリ actor が載っているマシン上の isolate を直接プロファイルできる。
注意点
- メモリプロファイルは「計測ウィンドウ中のアロケーション」だけ見える。起動時のアロケーションは取りこぼしやすい
- 明示的に開始する必要がある(問題の瞬間を逃す可能性)。将来 continuous profiling が予定されている
- 社内事例では、再帰的な JSON replacer の無駄や、無効化したつもりだった Prometheus 計装がメモリの 2/3 を食っていた、などを flamegraph で特定している
出典
- @Cloudflare · 2026-10-09
- 公式ブログ: blog.cloudflare.com
- DevTools / CPU ドキュメント: developers.cloudflare.com