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 にする運用はコールドスタートを招き、ピーク時のコネクション圧を解消する手段としては不適切です。

コメント