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
'SQL Server > SQL Server Tip' 카테고리의 다른 글
Ring buffer를 활용한 External Memory Pressure 확인 (0) | 2015.07.23 |
---|---|
Memory Pressure (0) | 2015.07.23 |
누락된 공유 잠금 (Missing Shared Locks) (0) | 2015.07.23 |
Ad Hoc Distributed Queries 옵션 (0) | 2015.07.23 |
높은 MAXDOP은 쿼리를 느리게 만들 수 있는가? (0) | 2015.07.23 |