ふり返る暇なんて無いね

日々のメモ書きをつらつらと。メインブログに書くほどでもないことを流してます

CloudSQL(PostgreSQL)のmax_connectionsを上げたい

割り当てと上限  |  Cloud SQL ドキュメント  |  Google Cloud にありますが、max_connectionsフラグを設定することで設定変更できます。

MySQL max_connections フラグを使用すると、接続数の上限を構成できます。MySQL で最大 100,000 件の接続が可能です。データベースに接続して次のコマンドを実行すると、インスタンスの接続数上限を確認できます。 SHOW VARIABLES LIKE "max_connections";

PostgreSQL max_connections フラグを使用すると、接続数の上限を構成できます。Cloud SQL for PostgreSQL インスタンスを作成すると、マシンタイプ構成設定により、選択したコア数に基づき、自動的に利用可能なメモリサイズの範囲が調整されます。これにより、インスタンスに設定される当初のデフォルトの接続数上限も設定されます。

データベースに接続して次のコマンドを実行すると、インスタンスの接続数上限を確認できます。SELECT * FROM pg_settings WHERE name = 'max_connections';

terraform で書くとするとこんな感じでしょうか。

resource "google_sql_database_instance" "main" {
  name             = "db_instance"
  database_version = "POSTGRES_14"
  region           = "asia-northeast1"

  settings {
    tier = "db-f1-micro"
    database_flags {
      name  = "max_connections"
      value = 100
    }
  }
}

なお、デフォルトのmax_connectionsはメモリーの容量によって自動的に設定されます。db-f1-microならメモリ0.6GBなのでmax_connectionsは25となります。

DB接続回りでほかに注意する点としてはCloud Runインスタンス当たりの接続数は100までに制限されています。

Cloud Run に関する上限 Cloud Run サービスでは、Cloud SQL データベースに対する接続数が 100 に制限されています。この上限はサービス インスタンスごとに適用されます。つまり、Cloud Run サービスの各インスタンスはデータベースに対して 100 接続を保持できるため、スケールした場合にデプロイあたりの接続の合計数が増加する可能性があります。