설명
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으로 동적 조정을 사용합니다. 무한한 연결이나 자원을 제공하지는 않습니다.