PCD#353(integrating)

PCD#353(integrating)
Cloud SQL を利用するマイクロサービスで、ピーク時に接続が枯渇し PgBouncer 相当のコネクションプーリングを導入したいです。アプリ改修を最小限にしつつマネージドに利用したい場合、どの選択肢が適していますか?

正解:C

正解の根拠

Cloud SQL は接続数に上限があり、サーバーレスや GKE での多インスタンス運用ではコネクション枯渇が起こりやすいです。PgBouncer のトランザクションプーリングを挟むことで、多数のアプリ接続を少数の DB 接続に集約し、アプリ改修を最小限に抑えられます。

プール方式比較

方式多重化粒度注意点
Session poolingセッション単位多重化効果は限定的
Transaction poolingトランザクション単位prepared statement 制約あり
Statement poolingステートメント単位機能制約が大きい

PgBouncer 設定例

[databases]
mydb = host=127.0.0.1 port=5432 dbname=mydb

[pgbouncer]
pool_mode = transaction
max_client_conn = 2000
default_pool_size = 25

不正解の理由

  • A: Cloud SQL Auth Proxy はセキュアな接続経路を提供するもので、アプリ層のコネクションプーリング機能は持ちません。
  • B: JDBC プールの上限引き上げだけでは Cloud SQL 側の max_connections に到達し、根本解決にはなりません。
  • D: min-instances を 0 にする運用はコールドスタートを招き、ピーク時のコネクション圧を解消する手段としては不適切です。

参考:Cloud SQL Manage database connections


コメント

コメント

コメントする

目次