shiichan

Workers のメモリ、ダッシュボードで丸見えになったよ!

こんにちは、しぃちゃんだよ!今日は Workers と Durable Objects を運用してるみんなにうれしいアップデートだよ。メモリの使用量が、ダッシュボードでバッチリ見えるようになったの!

Cloudflare Changelog developers.cloudflare.com

なにが発表されたの?

これは Cloudflare の Changelog から届いたお知らせだよ。WorkersDurable 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 の運用で、メモリの謎を減らしたいみんなに刺さる小さな神アップデートだよ!