SQL Server/SQL Server Tip

64비트 버전의 SQL Server 버퍼 풀 메모리 페이지 수 줄이는 방법 - Lock Page In Memory 설정

SungWookKang 2015. 7. 23. 09:36
반응형

64비트 버전의 SQL Server 버퍼 풀 메모리 페이지 수 줄이는 방법

  • Lock Page In Memory 설정

 

  • Version : SQL Server 2005, 2008, 2008R2, 2012

 

SQL Server 64비트 버전에서 다음과 같은 문제가 발생 할 수 있다.

  • SQL Server 성능이 갑자기 저하 된다.
  • SQL Server 실행 하는 컴퓨터가 잠시 동안 응답하지 않는다.
  • SQL Server 연결 응용 프로그램에 대한 시간이 초과되었다.
  • 시스템에서 응용 프로그램을 사용할 때 문제가 발생 한다.

 

SQL Server 2005 SP2 이후 버전을 설치한 경우 이 문제가 발생하면 SQL Server 오류 로그에 기록 된다. 오류 로그는 다음과 같은 내용으로 기록 된다.

date time spid1s A significant part of sql server process memory has been paged out. This may result in a performance degradation. Duration: 0 seconds. Working set (KB): 1086400, committed (KB): 2160928, memory utilization: 50%.

date time spid1s A significant part of sql server process memory has been paged out. This may result in a performance degradation. Duration: 315 seconds. Working set (KB): 410156, committed (KB): 2201296, memory utilization: 18%.

date time spid1s A significant part of sql server process memory has been paged out. This may result in a performance degradation. Duration: 646 seconds. Working set (KB): 901904, committed (KB): 2215752, memory utilization: 40%.

 

다음과 같이 Windows 이벤트 로그나 SQL Server 오류 로그에 기록된다. 이러한 경우 유일하지는 않지만 SQL Server working set paging을 고려해야 한다.

2009-05-05 15:43:56.01 Server Resource Monitor (0x13c43) Worker 0x0412C1E8 appears to be non-yielding on Node 0. Memory freed: 34152 KB. Approx CPU Used: kernel 171 ms, user 140 ms, Interval: 125093.

 

2009-05-05 12:54:52.18 Server * *******************************************************************************

2009-05-05 12:54:52.18 Server * BEGIN STACK DUMP:

2009-05-05 12:54:52.18 Server * 05/05/08 12:54:52 spid 0

2009-05-05 12:54:52.18 Server * Non-yielding Resource Monitor

2009-05-05 12:54:52.18 Server * *******************************************************************************

 

2009-06-10 09:13:53.44 Server * *******************************************************************************

2009-06-10 09:13:53.44 Server * BEGIN STACK DUMP:

2009-06-10 09:13:53.44 Server * 06/10/09 09:13:53 spid 0

2009-06-10 09:13:53.44 Server * Non-yielding IOCP Listener

2009-06-10 09:13:53.44 Server * *******************************************************************************

 

2009-06-10 09:13:55.85 spid2s LazyWriter: warning, no free buffers found.

 

2009-07-15 13:27:45.35 spid4s AppDomain xx (SQLCLR.dbo[runtime].xx) is marked for unload due to memory pressure.

2009-07-15 13:27:45.35 spid4s AppDomain xx (SQLCLR.dbo[runtime].xx) unloaded.

 

2009-07-15 13:37:51.42 Logon Error: 17189, Severity: 16, State: 1.

2009-07-15 13:37:51.42 Logon SQL Server failed with error code 0xc0000000 to spawn a thread to process a new login or connection. Check the SQL Server error log and the Windows event logs for information about possible related problems. [CLIENT: xx.xxx.xx.xx]

 

Event Type:    Error

Event Source:    SQLBrowser

Event ID:    8

Description: The SQLBrowser service was unable to process a client request.

 

 

 

이 문제의 원인은 Windows가 SQL Server 프로세스의 Working set Paging를 운영하기 때문에 발생한다. 이러한 오류 메시지는 처음 30분간 5분 간격으로 기록되며 이 시기에 다른 응용 프로그램도 페이지 아웃 되는 것을 확인 할 수 있다.

 

이 문제를 해결 하기 위해서는 메모리 페이지 잠금(Lock page in memory)을 설정한다. SQL Server 64비트 엔터프라이즈에서 지원한다.

 

[Lock Page in memory 설정]

[시작] – [실행]에서 [gpedit.msc]를 입력 한 다음 확인을 클릭한다. 그럽 정책 대화 상자가 나타나면 [컴퓨터 구성] – [Windows 설정] – [보안 설정] – [로컬 정책] – [사용자 권한 할당]을 확장하여 [메모리에 페이지 잠금]을 더블 클릭한다.

 

[사용자 또는 그룹 선택 대화 상자]에서 sqlservr.exe 파일을 실행 할 수 있는 권한이 있는 계정을 추가한 다음 확인을 클릭한다.

 

사용자 추가가 완료 되었으면 SQL Server 서비스를 재시작 한다.

 

 

[참고자료]

http://support.microsoft.com/kb/918483/ko

 

 

2014-01-07 / 강성욱 / http://sqlmvp.kr

 

반응형