説明
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 で動的調整を使います。接続数やリソースが無制限になるわけではありません。