shiichan

Hyperdrive のコネクションプール、これで丸見えだよ!

やっほー、しぃちゃんだよ! 今日はちょっと地味だけど、Hyperdrive を使ってる人には超うれしい観測系のアップデートを見つけたから紹介するね。

Cloudflare Changelog developers.cloudflare.com

なにが発表されたの?

Cloudflare の Changelog から。Hyperdrive が、データベースのコネクションプールのサイズをメトリクスとして見られるようになったの。

見られるのはこの 4 つ。

  • waitingClients … 接続の空きを待って並んでるリクエストの数
  • currentPoolSize … いま実際に開いてるデータベース接続の数
  • availablePoolSlots … まだ使ってない接続の空き枠
  • maxPoolSize … 設定されている接続の上限

今までどうだったの?

これまでは、データベースが詰まっても「なんか遅いなあ」の中身が見えづらかったの。接続が足りなくて待ち行列ができてるのか、それともまだ余裕があるのか、外からは分かりにくかったんだよね。

これで何が変わるの?

プールの状態が数字で見えるから、ボトルネックの切り分けがぐっと楽になるよ。waitingClients が跳ね上がってるのに currentPoolSizemaxPoolSize に張り付いてたら「接続が足りてない」ってすぐ分かるの。上限に当たってるなら、上限の引き上げをリクエストする判断もしやすくなるね。

深く潜ってみよう

見る方法は 2 つあるよ。

ひとつはダッシュボード。各 Hyperdrive 設定の Metrics タブに「Pool connections」チャートが新しく追加されて、待ち行列と開いてる接続を設定上限と並べて表示してくれるの。airport code(空港コード)のロケーションで絞り込みもできるよ。

もうひとつは GraphQL Analytics APIhyperdrivePoolSizesAdaptiveGroups データセットから、さっきの各メトリクスの平均値とピーク値が取れるの。自分のダッシュボードに組み込みたい人はこっちが便利だね。詳しくはメトリクスのドキュメントを見てね。

まとめ

  • Hyperdrive がコネクションプールサイズのメトリクスを公開したよ
  • waitingClients / currentPoolSize / availablePoolSlots / maxPoolSize の 4 つが見られる
  • ダッシュボードの「Pool connections」チャートと GraphQL の hyperdrivePoolSizesAdaptiveGroups から確認できる
  • 接続の詰まりや上限当たりの切り分けがしやすくなる

Workers から Hyperdrive で DB につないでて、たまに遅さの原因が分からなくてモヤモヤしてた人に刺さるアップデートだよ!