Cloudflare Workers、CPU・メモリ消費を関数単位で追えるように

スナック3行まとめ

  • CloudflareがWorkersとDurable Objectsに、本番稼働中のCPU・メモリをオンデマンドでプロファイリングする機能を追加しました。
  • 取得結果は対話型のフレームグラフで確認でき、ファイルとしてダウンロードできます。
  • 取得は手動で開始し、対象のWorkerには十分なトラフィックが必要です。

Cloudflareは2026年10月9日、本番環境で動くWorkersとDurable ObjectsのCPU・メモリプロファイルを、必要なときに取得できる機能を発表しました。ログや集計値だけではつかみにくい負荷の原因を、関数単位で調べられます。

Workers ObservabilityでFlamegraphを選択するメニュー画面
Workers Observabilityで「Flamegraph」を選ぶメニュー。出典:Cloudflare。

スナックガールズのひとこと

AIKO: 負荷の数字に関数名が付くのは好みです。「CPUが忙しい」だけでは、担当関数に事情を聞けませんから。

ネア: Cloudflareの社内事例で、無効にしたつもりのPrometheus関連処理がまだメモリを使っていたのが気になります。どこに動きが残っていたのか、コードをたどってみたいですね。

ダッシュボードかCLIで、対象と収集時間を選ぶ

取得にはWorkers Observabilityのダッシュボードかcf CLIを使います。ダッシュボードでは「Build」→「Compute」→「Workers & Pages」から対象のWorkerを選び、「Observability」の「Flamegraph」を開きます。

CPUかメモリか、対象のWorkerバージョン、サンプルを集める時間を指定し、「Capture Profile」で取得を始めます。指定する時間は収集期間であり、その時間内にすべての処理が完了するという意味ではありません。

TypeScriptのプロジェクトでは、ソースマップを有効にしておきましょう。無効のままだと、プロファイルに難読化された関数名が表示されることがあります。

CPU・メモリプロファイルの種類、Workerバージョン、収集時間を設定する画面
対象のWorkerバージョンと収集時間を指定するプロファイル取得画面。出典:Cloudflare。

幅の広い関数から負荷をたどる

フレームグラフの長方形は関数呼び出しを表し、横幅がCPU時間またはメモリ割り当ての多さを示します。関数をクリックすると表示を絞り込め、カーソルを合わせると詳細を確認できます。

Cloudflareの社内事例では、R2バインディング用WorkerでCPU時間の5%超を占めていたJSON処理関数に、再帰的な重複処理が見つかりました。同社は重複を取り除き、この関数を2.7倍高速化したと報告しています。

通常のWorkersでは、指定したバージョンが動く実行環境(isolate)の一つがランダムに選ばれます。Durable Objectsはオブジェクト名で指定でき、そのオブジェクトが稼働する実行環境を対象にプロファイルを取得できます。

Cloudflare社内のR2バインディング用Workerで取得したCPUフレームグラフの例
Cloudflareが公開した社内のR2バインディング用WorkerのCPUフレームグラフ例。出典:Cloudflare。

低トラフィックと起動時のメモリ割り当てに注意

対象には、デプロイ済みで十分なトラフィックのあるWorkerバージョンを選ぶ必要があります。プロファイルの取得だけを目的に新しい実行環境は作られないため、アクセスがごく少ない場合は取得が難しくなります。

メモリプロファイルが示すのは、収集期間中に発生した割り当てだけです。起動時の割り当てが収集開始前に終わっていれば、その分は捉えられません。

取得は手動で開始するため、まれな不調が起きた瞬間を逃すこともあります。Cloudflareはサンプルを自動で集める継続的プロファイリングを開発中ですが、こちらはまだ提供されていません。

出典・確認日: 2026年10月10日

関連ハッシュタグ
#GameSunakku #CloudflareWorkers #DurableObjects #プロファイリング #フレームグラフ #サーバーレス

コメント

0

ログイン不要。投稿したブラウザから編集・削除できます。

すべてのコメント 0

한국어 · English · 日本語

まだコメントはありません。最初のひとことをどうぞ。

この記事をシェア

Game Sunakku에서 더 알아보기

지금 구독하여 계속 읽고 전체 아카이브에 액세스하세요.

계속 읽기