메모리 부족을 피하기 위한 최대 서버 메모리 제한 - AWS 규범적 지침

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

메모리 부족을 피하기 위한 최대 서버 메모리 제한

성능상의 이유로 SQL Server는 이미 할당한 메모리를 릴리스하지 않습니다. SQL Server가 시작되면 min_server_memory 옵션에 지정된 메모리를 천천히 사용하다가 max_server_memory 옵션에 지정된 값에 도달할 때까지 계속 늘립니다. (이러한 설정에 대한 자세한 내용은 SQL Server 설명서의 Server 메모리 구성 옵션을 참조하십시오.)

SQL Server 메모리에는 버퍼 풀과 비버퍼 풀(memory to leave 또는 MTL이라고도 함)이라는 두 가지 구성 요소가 있습니다. max_server_memory 옵션의 값은 버퍼 캐시, 프로시저 캐시, 계획 캐시, 버프 구조 및 기타 캐시로 구성된 SQL Server 버퍼 풀의 크기를 결정합니다.

SQL Server 2012부터 min_server_memorymax_server_memorySQLGENERAL, SQLBUFFERPOOL, SQLQUERYCOMPILE, SQLQUERYPLAN, SQLQUERYEXEC, SQLOPTIMIZER, SQLCLR을 포함하여 모든 캐시에 대한 모든 메모리 할당을 고려합니다. max_server_memory의 전체 메모리 클럭 목록은 Microsoft SQL Server 설명서의 sys.dm_os_memory_clerks를 참조하십시오.

현재 max_server_memory 값을 확인하려면 다음 명령을 사용하십시오.

$ sp_configure 'max_server_memory'

max_server_memory는 시스템 전체의 메모리 압력을 유발하지 않는 값으로 제한하는 것이 좋습니다. 모든 환경에 적용되는 보편적인 공식은 없지만 이 단원에서는 몇 가지 지침을 제공했습니다. max_server_memory는 동적 옵션이므로 런타임에 변경할 수 있습니다.

시작점으로 max_server_memory를 다음과 같이 결정할 수 있습니다.

max_server_memory = total_RAM – (memory_for_the_OS + MTL)

여기서 각 항목은 다음과 같습니다.

  • 운영 체제의 메모리는 1~4GB입니다.

  • MTL(memory to leave)에는 64비트 시스템에서 워커 스레드당 2MB인 스택 크기가 포함되며, 이 크기는 다음과 같이 계산할 수 있습니다. MTL = stack_size * max_worker_threads

또는 다음을 사용할 수 있습니다.

max_server_memory = total_RAM – (1 GB for the OS + memory_basis_amount_of_RAM_on_the_server)

여기서 RAM의 메모리 기본 용량은 다음과 같이 결정됩니다.

  • 서버의 RAM이 4GB에서 16GB 사이인 경우 RAM 4GB당 1GB를 남겨 두십시오. 예를 들어, 용량이 16GB인 서버의 경우 4GB를 남겨 두십시오.

  • 서버의 RAM이 16GB를 초과하는 경우, 16GB까지는 RAM 4GB당 1GB를, 16GB 초과의 RAM에는 8GB당 1GB를 남겨 두십시오.

예를 들어, 서버의 RAM이 256GB인 경우 계산은 다음과 같습니다.

  • 운영 체제의 경우 1GB

  • 최대 16GB RAM: 16/4 = 4GB

  • 16GB를 초과하는 남은 RAM: (256-16)/8 = 30

  • 남은 총 RAM: 1 + 4 + 30 = 35GB

  • max_server_memory: 256 - 35 = 221GB

초기 구성 후에는 일반적인 워크로드 기간 동안 확보할 수 있는 메모리를 모니터링하여 SQL Server에 할당된 메모리를 늘리거나 줄여야 하는지 판단하십시오.

참고

Windows는 96MB에서 메모리 리소스 부족 알림을 보내므로 버퍼가 필요하지만 RAM이 256GB 이상인 대규모 서버의 경우 사용 가능한 MB를 1GB 초과로 설정할 수 있습니다.

자세한 내용은 Microsoft SQL Server 설명서의 메모리 관리 아키텍처 설명서를 참조하십시오.