SharedIT | 묻고 답하기(AMP)

sqlservr.exe 메모리가 심하게 올라가네요,,,

윈도우서버사용중인데, 어느날부터 메모리가 엄청 높더니 세부 정보를 보니

sqlservr.exe 가 엄청 많이 잡아먹더라구요, 

혹시 sql server도 메모리 한계치?? 를 설정할 수 있나요?? 
Tags : 태그가 없습니다.

5개의 답변이 있습니다.

그저멍하니
  0 추천 | 6년 이상 전
MSSQL 은 공통적인 특성이 있는것 같습니다.

VM에서 최대 리소스를 올려보아도

해당 리소스를 전부 사용하는것으로 보아,

동일한 현상으로 보이네요
한그루
  0 추천 | 6년 이상 전
MS SQL 은 한번 사용한 (호출한) 메모리를 OS 에 반환하지 않습니다.
그래서 재부팅후 메모리 사용량이 꾸준히 올라가서 나중엔 늘 한계치를 사용하는것 처럼 보입니다.
잘 사용 되고 있는겁니다. 

그래서 저희는 Jook 님 설명 처럼 아래 처럼 셋팅해서 사용합니다. OS 메모리 보다 적게 적당량을 Max로 지정.
추가로 한달에 한번씩 정기적으로 서버를 재부팅 합니다. (메모리 때문은 아니고 회사 정책상)

양성환 | 6년 이상 전

반환안하는것은 아니고, MIN이 MAX와 동일한경우만 반환하지않습니다. MIN이 작은 경우 OS가 요청 시 반환하기도합니다. 게다가 MAX는 버퍼풀이라는 공간만 지정하는 공간으로 해당영역이상 메모리를쓸수도있습니다. 메모리메커니즘은 SQL SERVER 버전마다 다를수있습니다.

한그루 | 6년 이상 전

아 그렇군요. 메모리를 한번 점유해서 사용하면 보통은 OS가 요청하지 안으면 반환을 하지는 않다가 OS가 요청하면 가끔 메모리 반환이 생기기도 하는거군요? 조금더 명확해 졌습니다. 서버 모니터링 툴을 보면 보통 전체적으로 사용량이 확 주는 일이 없고 거의 올라간 상태로 유지가 되지만 경고가 왔다가 해소 됐다가 하더라구요. 감사합니다.

양성환 | 6년 이상 전

모니터링툴에서 DBMS는 메모리리밋이 99%일때를 제외하고는 빼두셔도됩니다. 아주정확하진않지만, 그정도리밋이면 튜닝이필요하거나 물리적메모리가 부족한 경우이니까요. 버퍼풀영역, 즉 MAX설정치는 반환을잘안하는데,그외에 영역들,연결된서버사용 이나, 쿼리상 XML사용분등은 버퍼풀영역이아니여서 반환가능합니다. 버퍼풀영역은 반환이되는경우가 성능상은 더 심각한경우일수도있어요^^::

한그루 | 6년 이상 전

그렇군요. 메모리 경고 상한선을 97% 로 해야겠네요. 감사합니다.
양성환
  0 추천 | 6년 이상 전
최대메모리 설정은 jook님 이야기대로 설정가능합니다만, RDBMS에서 메모리를 많이쓰는것은 문제가있는것이 아니라 매우잘쓰고있는겁니다.
RDBMS특성상 쿼리 재사용을 위해 메모리 저장을합미다.
다만 부족하다면 원인을 찾아야하는것이구요
danis78
  0 추천 | 6년 이상 전 | 제이컴즈 | 010-2871-8756
sqlserver 에서 메모리를 어느정도 잡아 먹는지 모르겠지만 참고로 저희 회사 그룹웨어는 10G 정도 사용하고 있네요 
다른 서버랑 연결된 게 많이 있어서요 
jook
  0 추천 | 6년 이상 전
management studio 접속후, 서버속성 -> 메모리 -> 최대서버 메모리 값을 조정하여, sqlserver에서 사용할 수 있는 최대 메모리 값을 제한 할 수 있습니다.

무조건 메모리를 제한 하는 것 보다, 어떤 DB, table 에서 사용량이 많은지 체크하고, 근본적인 원인을 찾아서 해결 하셔야 할 것 같습니다. ~~

부산갈매기 | 6년 이상 전

자세한 답변 정말 감사합니다.^^