
안녕하세요.
제가 관리하는 SQL Server들 중 메모리 점유에 관해 이상 현상을 보여서, 질문드리고자 합니다.
sqltag에도 문의드린 내용입니다만 - 많은 분들의 조언을 구하고자, 여기에 다시 올립니다.
--------------------------------------------------------------------------------------------------------
1. server : Microsoft SQL Server 2005 - 9.00.5000.00 (X64)
Dec 10 2010 10:38:40
Copyright (c) 1988-2005 Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 5.2 (Build 3790: Service Pack 2)
2개의 node 모두 버전 동일함. (SQL Server 2005 service pack 4)
2. 환경 개요 : 2개 node 의 HA clustering 구조
서버 전체 memory = 32GB
max server memory 설정= 20GB
64bit OS / SQL Server 이므로 AWE enabled 설정 = 0
3. 증상 요약 : max server memory 와 무관하게 sqlservr.exe 메모리 점유가 이상 증가됨
4. 상세 기술 :
64bit SQL Server에서 서버의 메모리를 locked page 로 처리하기 때문에,
dbcc memorystatus 실행 시 AWE Allocated 항목에 Total server memory 수치가 나타남
이 경우 sqlservr.exe는 엔진 구동에 필요한 메모리만 할당, 수행됨
node#1 에서 인스턴스 구동시
[perfmon] Total server memory = [perfmon] Target server memory = AWE Allocated 항목 = 20GB
sqlservr.exe 메모리 점유가 중지됨 없이 지속적으로 증가됨 (첨부그림 참조)
sqlservr.exe가 지속적으로 늘어나서 서버 메모리가 부족해지면 Total server memory가 떨어지며 증가됨
가상메모리까지 full 찬 뒤 => 메모리 부족으로 sql server 서비스 자동 재시작
node#2 로 take-over해서 인스턴스 구동시
[perfmon] Total server memory = [perfmon] Target server memory = AWE Allocated 항목 = 20GB
sqlservr.exe 메모리 점유는 200~300MB 수준으로 지속 유지, 정상 서비스 됨
---------------------------------------------------------------------------------------------------------
node#1 에서만 total server memory의 영역 이외에 sqlservr.exe 메모리 점유가 끝없이 늘어난다는 점이 이슈입니다.
첨부된 사진에서 sqlservr.exe는 8.5GB 정도 점유하고 있는데, 작업관리자 가장 하단 전체 사용 메모리는 31GB정도로 나타납니다.
[AWE Allocated 항목에 나타나는 (max server memory 값) 20GB + sqlservr.exe 8.5GB + 기타 프로그램 사용 약 3GB] = 약 31GB
인 것입니다.
이것을 node#2 로 take-over하면
[AWE Allocated 항목에 나타나는 (max server memory 값) 20GB + sqlservr.exe 300MB + 기타 프로그램 사용 약 3GB] = 약 24GB
로 나타나며 더 이상 증감없이 안정적으로 운영됩니다.
이 증상들은 지난 4월에 windows update 를 실행하고 나서 발생했는데요.
windows update 목록들은 모두 보안관련 패치일 뿐이라 이슈의 근거가 되지는 못할 것 같습니다.
No. | KB | desc |
1 | 2820917 | Windows CSRSS(Client/Server Run-time Subsystem)의 취약점으로 인한 권한 상승 문제점 (2820917) - 중요 |
2 | 2727528 | Windows 셸의 취약점으로 인한 원격 코드 실행 문제점 (2727528)- 긴급 |
3 | 2753842-v2 | Windows 커널 모드 드라이버의 취약점으로 인한 원격 코드 실행 문제점 (2783534) - 긴급 |
4 | 2757638 | Microsoft XML Core Services의 취약점으로 인한 원격 코드 실행 문제점 (2756145)- 긴급 |
5 | 2758857 | Windows 파일 처리 구성 요소의 취약점으로 인한 원격 코드 실행 문제점 (2758857) - 긴급 |
6 | 2770660 | DirectPlay의 취약점으로 인한 원격 코드 실행 문제점 (2770660) - 중요 |
7 | 2780091 | 미디어 압축 해제의 취약점으로 인한 원격 코드 실행 문제점 (2780091) - 긴급 |
8 | 2807986 | 커널 모드 드라이버의 취약점으로 인한 권한 상승 문제점 (2807986) - 중요 |
9 | 2808735 | 커널 모드 드라이버의 취약점으로 인한 권한 상승 문제점 (2829996) - 중요 |
10 | 2813170 | Windows 커널의 취약점으로 인한 권한 상승 문제점 (2813170) |
참고로 4월 patch 목록은 위와 같습니다.
node#1과 #2의 DBMS 파라미터(sp_configure)는 (당연히)동일하고, 시작파라미터또한 동일합니다.
혹시 이같은 상황을 아시는 분의 의견 부탁드립니다.
만약 원인이 밝혀지지 않으면, node#1에 대한 서버 재설치밖에 답이 없을 듯 합니다.
미리 감사드립니다.
Comment 4
-
minsouk
2013.07.01 16:45
-
house
2013.07.01 17:34
감사합니다 .^^
-
minsouk
2013.07.02 20:04
sqltag 에서 답변 드렸지만 vmmap 으로 보면 확인 할 수 있을것이구요 여기서 안나오면, 마크 아저씨가 잘못 짠거에요~
vmmap 에는 committed, private byte workingset 등을 자세히 볼 수 있고, 할당 사이즈까지 조회가 가능 합니다.
또다른 방법은 fulldump 내려서 확인 가능 할 듯 합니다.
보지말고 점쳐봐.... 이건 어렵습니다. 한번 더 메모리가 이상증가 현상은 필수로 필요 할 듯 합니다.
다시깔고 증상이 고쳐지고나서 추가 필요한 작업을 하고나니 또 메모리가 증가하더라....이런 경우가 발생 할 수 있으니까요~
rammap 은 sql 2012는 vmmap 과 같은 결과가 나오지만, sql 2008 은 다른 결과가 나올겁니다. 그러니, vmmap 으로 꼭 원인을 조사해 보세요~
-
house
2013.07.09 13:17
답변 감사합니다.
말씀대로 vmmap 은 확인해 볼 예정입니다. 다만 특정 메모리 구역이 비대하게 나오든 어떤 쪽이든, 그걸 보고 명쾌한 해결을 얻는 것 또한 다음 단계의 문제가 될 것 같아, 동일 이슈를 겪고 해결한 분이 있으시다면 사례와 의견을 듣고자 한 것이었습니다.
vmmap 결과가 나타나면 다시 게시해 볼 예정입니다. 재설치 없이 문제 해결하여 사례 공유 하고 싶지만 가능할 지 모르겠네요.
좋은소식 있길 바랍니다.~