데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

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

 




강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp

No. Subject Author Date Views
» 64비트 버전의 SQL Server 버퍼 풀 메모리 페이지 수 줄이는 방법 jevida(강성욱) 2016.10.12 2432
1909 누락된 공유 잠금 (Missing Shared Locks) jevida(강성욱) 2016.10.12 1560
1908 Ad Hoc Distributed Queries 옵션 jevida(강성욱) 2016.10.12 3044
1907 높은 MAXDOP은 쿼리를 느리게 만들 수 있는가? jevida(강성욱) 2016.10.12 1305
1906 변경된 테이블 이름 복구하기 jevida(강성욱) 2016.10.12 1290
1905 Sys,dm_exec_connections jevida(강성욱) 2016.10.12 1908
1904 SQL Server 시작 매개 변수 설정 jevida(강성욱) 2016.10.12 2478
1903 AFTER 트리거를 INSTEAD OF 트리거로 변경 후 효율성 향상 jevida(강성욱) 2016.10.12 1782
1902 쿼리 대기 옵션 jevida(강성욱) 2016.10.12 1564
1901 Index create memory 설정 jevida(강성욱) 2016.10.12 1230
1900 Min memory per query 옵션 jevida(강성욱) 2016.10.12 1677
1899 SQL Server 에디션 다운그레이드와 제한된 기능 확인 jevida(강성욱) 2016.10.12 2121
1898 Downgrade from SQL Server Ent to Std Edition jevida(강성욱) 2016.10.12 1336
1897 트랜잭션 로그 여유 공간 모니터링 jevida(강성욱) 2016.10.12 1342
1896 SQL Server가 서비스 격리를 처리하는 방법 jevida(강성욱) 2016.10.12 1144
1895 쿼리 매개변수화 확인하기 jevida(강성욱) 2016.10.12 1428
1894 SQL Server에서 Drop 및 Delete 사용자 찾기 jevida(강성욱) 2016.10.12 1628
1893 SQL Server 트랜잭션 로그 읽기 jevida(강성욱) 2016.10.12 2067
1892 MaxBCPThreads에 따른 BCP 병렬출력 jevida(강성욱) 2016.10.11 1088
1891 확장이벤트와 dm_os_wait_stats 대기유형 매핑 jevida(강성욱) 2016.10.11 1883





XE Login