Workers のメモリ、ダッシュボードで丸見えになったよ!
こんにちは、しぃちゃんだよ!今日は Workers と Durable Objects を運用してるみんなにうれしいアップデートだよ。メモリの使用量が、ダッシュボードでバッチリ見えるようになったの!
Cloudflare Changelogなにが発表されたの?
これは Cloudflare の Changelog から届いたお知らせだよ。Workers と Durable Objects のメモリ使用量が、ダッシュボードで追えるようになったの!Workers の Metrics タブに新しく Memory Usage チャートが増えて、V8 isolate が使ってるメモリを P50・P90・P99・P999 のパーセンタイルで見せてくれるんだよ。計測は呼び出し(invocation)ごとに行われるの。
今までどうだったの?
これまでは、自分の Worker がメモリをどれくらい使ってるか、外からはなかなか見えづらかったの。じわじわメモリが増えていってリークしてるのか、それともまだ余裕たっぷりなのか、限界にぶつかるまで気づきにくかったんだよね。
これで何が変わるの?
これからは、メモリがじわじわ増えていく様子が見えるからリークの早期発見に役立つし、デプロイのマーカーと重ねれば、どのリリースでメモリが変わったのかを突き止められるの。限界に達する前に、平常時のメモリの土台(ベースライン)を把握しておけるのもうれしいポイントだよ。
深く潜ってみよう
Workers の isolate には 128 MB の per-isolate リミットがあって、Memory Usage チャートはこの上限に対してどのくらい使ってるかを教えてくれるよ。
Durable Objects の場合は、クラスのプロパティやキャッシュ、WebSocket 接続みたいな in-memory の状態が反映されるの。この状態は DO がハイバネートされるか evict されるまで保持されるよ。ずっと残したいデータは storage に置いてね、っていう住み分けだね。ダッシュボードでは DO の ID や名前でフィルタして、特定のオブジェクトだけを見ることもできるんだって。
プログラムから取りたいときは、GraphQL Analytics API の workersInvocationsAdaptive データセットを使ってね。quantiles.memoryUsageBytesP50 から quantiles.memoryUsageBytesP999 までのフィールドで、バイト単位のパーセンタイル値が取れるよ。もっと細かく原因を追いたいときは、DevTools でメモリをプロファイルする方法もあるの。
まとめ
- Workers の Metrics タブに Memory Usage チャートが登場、V8 isolate のメモリを P50・P90・P99・P999 で表示
- 呼び出しごとに計測、リークの早期発見やデプロイとの相関チェックに便利
- isolate は 128 MB、Durable Objects は in-memory の状態(ハイバネート/evict まで保持)を計測
- GraphQL Analytics API の workersInvocationsAdaptive でプログラムからも取得できる
- Workers や Durable Objects の運用で、メモリの謎を減らしたいみんなに刺さる小さな神アップデートだよ!