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

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

Memory Pressure

jevida(강성욱) 2016.10.12 04:05 Views : 1122

Memory Pressure

 

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

 

메모리 압력은 내부, 외부 두 가지 유형의 프로세스가 있다. 메모리 압력은 성능과 안정성을 극대화 하기 위해 발생한다. 외부 메모리 압력은 프로세스와 전체 시스템의 페이징으로 발생 할 수 있다. 내부 메모리 압력은 OOM 상태 및 프로세서의 충돌로 발생 할 수 있다.

 

외부 메모리 압력은 윈도우 운영 시스템에 의해 제어 되며 두 가지 유형이 있다. 물리적 동적 메모리 압력과 물리적 정적 메모리 압력이 있다. 시스템 페이지 파일이 부족하면 정적 메모리 압력이 발생 한다. 메모리 압력이 발생하면 시스템의 가상 메모리 부족을 나타내는 팝업을 윈도우 오른쪽 하단에서 확인 할 수 있다. 메모리 압력의 유형을 검출하기 위해 하나의 페이지 파일의 크기를 모니터 할 필요가 있다. 외부 동적 메모리 압력 상승은 윈도우가 낮은 프리메모리 환경과 작업 집합의 페이징 트리밍으로 인하여 발생한다.

 

내부 메모리 압력의 두 가지 유형으로는 물리 메모리 압력과 가상 주소 공간(Virtual Memory Address, VAS)압력이 있다. 메모리 관리자에 따라 물리 내부 메모리 부족으로 발생 할 수 있다. 예를 들어 프로세스 축소로 외부 압력이 발생 할 수 있다. 메모리 프로세스 트리거로 인하여 메모리가 해제 되고 내부 메모리 압력이 발생 할 수 있다. 또 다른 사례로 관리자가 프로세스의 메모리 제한을 설정하는 경우 이다. 프로세스의 최대 메모리에 도달하면 프로세스는 내부 메모리 부족이 발생 하고 응용프로그램은 내부 캐시와 풀을 축소하여 복구 한다.

 

감지하기 어려운 것 중 하나가 VAS의 압력이다. VAS의 압력은 두 가지 이유가 있다. 첫 번째는 VAS의 조각화 이다. VAS 영역이 크거나 주어진 VAS 영역 없어도 발생 할 수 있다. 현재 가능한 최대 VAS 영역을 검출하는 쉬운 방법은 없지만 VAS 압력 상태를 확인하기 위해 주어진 크기의 VAS 영역 할당을 시도 할 수 있다. 하지만 조심해야 하는 부분이 4MB의 주기적인 큰 사이즈의 VAS 영역 할당 시도는 VAS 조각화를 발생 할 수 있다. VAS 압력에 대한 두 번째 이유는 전체 VAS의 소비이다. 이 경우 모든 VAS 할당이 실패 한다. 특히 32비트 하이-엔드 서버 플랫폼에서 VAS 압력을 처리 할 수 있어야 한다. VAS 압력을 회복하지 못하면 프로세스의 둔화를 야기하고 종료 될 수 있다. 애플리케이션 VAS 압력을 감지하면 그 캐시 및 풀의 축소에 의해 내부 물리적 압력과 동일한 방식으로 반응할 수 있다. 그리고 프로세스는 스레드풀 축소, 공유 메모리 영역제거, DLL을 언로드 등을 결정한다.

 

 

[참고자료]

http://sqlmvp.kr/140191466784

 



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

No. Subject Author Date Views
1930 트랜잭션 백업 실패와 전체 백업 성공 그리고 대처 방안 jevida(강성욱) 2016.10.13 1540
1929 Fast recovery 와 로그 잠금 jevida(강성욱) 2016.10.13 2021
1928 고스트 클린업 jevida(강성욱) 2016.10.13 2246
1927 페이지 분할이 발생 하였을 때 롤백을 하면 어떻게 될까? jevida(강성욱) 2016.10.13 1640
1926 DBCC WRITEPAGE - DBCC 명령을 사용한 데이터 파괴하기 jevida(강성욱) 2016.10.13 1641
1925 SQL Server Backup Error 3023 jevida(강성욱) 2016.10.13 2248
1924 Delete 작업과 페이지 offset 변화 jevida(강성욱) 2016.10.13 1477
1923 트랜잭션 로그 및 LSN을 이용한 삭제된 데이터 복구 jevida(강성욱) 2016.10.13 5052
1922 PFX 형식의 인증서를 SQL Server에서 사용하기 jevida(강성욱) 2016.10.13 1149
1921 SQL Server NUMA 메모리 노드와 Operating System 접근 jevida(강성욱) 2016.10.13 1290
1920 SQL Server 에러 핸들링 비용 비교 jevida(강성욱) 2016.10.13 1302
1919 압축 백업 시 Checksum 옵션으로 손상 확인하기 jevida(강성욱) 2016.10.13 1633
1918 SQL Server 2012 Memory Manager 구성 jevida(강성욱) 2016.10.13 1263
1917 SQL Server Memory Manager 변화 jevida(강성욱) 2016.10.13 1480
1916 Ring_Buffer_Resource_Monitor jevida(강성욱) 2016.10.13 994
1915 SQL Server 프로파일러 템플릿 만들기 jevida(강성욱) 2016.10.13 1335
1914 SQL Server 메모리 병목 현상 식별 jevida(강성욱) 2016.10.13 1770
1913 SQL Server 시작 옵션 사용 jevida(강성욱) 2016.10.13 1787
1912 Ring buffer를 활용한 External Memory Pressure 확인 jevida(강성욱) 2016.10.12 1272
» Memory Pressure jevida(강성욱) 2016.10.12 1122





XE Login