Cloud SQL SQL Server の同時接続上限の確認

想定負荷とインスタンス容量に合う接続上限を設定してください。

説明

SQL Server の user connections が必要な同時接続数より低いと、新しい接続が拒否される場合があります。ただし明示的な上限は意図した過負荷対策にもなり、1000 という値自体が誤りとは限りません。

0 は無制限ではなく、最大 32767 まで動的に調整する設定です。実際の処理能力はインスタンスのリソースとアプリケーションにも制約されます。

想定される影響

  • 上限が低すぎると、正当なリクエストや管理接続が拒否されるおそれがあります。
  • 容量を確認せず上限を上げると、リソース使用量や応答遅延が増える場合があります。

対処方法

  • 同時接続の使用量、接続プール、インスタンス容量を確認して user connections を決めてください。動的調整が適切な場合に 0 を使い、必要な再起動を計画してください。
  • 負荷テストで必要な接続の受け入れと過負荷対策を確認し、接続エラーとリソース使用量を監視してください。

例

インスタンス設定の一部を比較する例です。サポートされるエンジンバージョンと SQL Server 用のマシンタイプを使い、var.sql_server_tier と省略した必須入力を指定してください。このフラグ変更に、例にあるエンジンバージョンの変更が必要なわけではありません。

変更前

hcl
resource "google_sql_database_instance" "db" {
  name             = "sqlserver-instance"
  database_version = "SQLSERVER_2017_EXPRESS"
  region           = "us-central1"

  settings {
    database_flags {
      name  = "user connections"
      value = "1000"
    }
  }
}

変更後

hcl
resource "google_sql_database_instance" "db" {
  name             = "sqlserver-instance"
  database_version = "SQLSERVER_2019_STANDARD"
  region           = "us-central1"

  settings {
    tier = var.sql_server_tier

    database_flags {
      name  = "user connections"
      value = "0"
    }
  }
}

補足:

  • 変更前: 接続上限を 1000 にします。ワークロードと容量に合うか判断が必要です。
  • 変更後: 0 で動的調整を使います。接続数やリソースが無制限になるわけではありません。

参考資料