shiichan

Wrangler だけで Worker の起動の重さが丸わかりになったよ!

みんな、しぃちゃんだよ!Workers の開発体験がまた 1 つ良くなるニュースを見つけたから紹介するね。

Cloudflare Changelog developers.cloudflare.com

なにが発表されたの?

Cloudflare の Changelog で、wrangler check startup コマンドが Worker の生のバンドルサイズと gzip 圧縮後のサイズを表示するようになったって発表されたよ。それだけじゃなくて、ローカルでの起動時の CPU アクティビティも、ターミナル上にそのまま要約して見せてくれるの。

なぜ重要なの?

Worker は、リクエストを受け付ける前に一度モジュールを評価して起動する必要があるんだけど、バンドルが大きかったり起動時に重い処理をしていたりすると、その分コールドスタートのレイテンシが伸びちゃうんだよね。でも今までは、どのコードや依存関係が起動を遅くしているのかをぱっと把握する手段が手薄で、原因を探すのに手間がかかっていたの。

これで何が変わるの?

wrangler check startup を実行するだけで、起動時に何が重いのかをその場で確認できるようになったよ。バンドルサイズと CPU の内訳が一目で分かるから、コールドスタートが気になる Worker を、デプロイする前にサクッとチェックできるようになったの。

深く潜ってみよう

実行するコマンドはこれだけだよ。

wrangler check startup

出力には、こんな情報が含まれているよ。

  • Worker の生のバンドルサイズと gzip 圧縮後のサイズ
  • プロファイルを取得した時間の長さ(Profile window)
  • サンプリングした時間(Sampled time)
  • ガベージコレクションの時間を含む Active(実行中)時間
  • Idle(アイドル)時間
  • サンプル数

発表に載っていた実行例だと、バンドルは 7171.25 KiB(gzip で 2197.00 KiB)、Profile window は 70.3 ミリ秒で、そのうち Active が 38.5 ミリ秒(うち GC が 3.7 ミリ秒)、Idle が 31.8 ミリ秒だったよ。

さらに、詳しく見たいときのために .cpuprofile ファイルも引き続き保存されるから、Chrome DevTools や VS Code に読み込んでフレームグラフとして分析できるの。ただし注意点があって、このプロファイルはあくまでローカルマシンの CPU で計測したものだから、Cloudflare 上で実際に動くときの CPU とは違うんだって。だから「どこに時間がかかっているか」を把握するのには使えるけど、起動時間の絶対値は本番環境とぴったり一致するとは限らないよ。この機能を使うには Wrangler 4.116.0 以降が必要なの。

まとめ

  • wrangler check startup が、バンドルサイズと起動時 CPU の要約をターミナルに表示するようになった
  • 出力にはバンドルサイズ(raw/gzip)、Profile window、Active/Idle 時間、サンプル数などが含まれる
  • 詳細分析用の .cpuprofile は引き続き出力され、Chrome DevTools や VS Code で見られる
  • ローカル CPU での計測なので、絶対値は本番のコールドスタート時間と一致するとは限らない
  • Wrangler 4.116.0 以降が必要

コールドスタートが気になっている、Worker のバンドルを絞りたいエンジニアのみんなに、今すぐ試せる嬉しいアップデートだよ!