현제 작은 웹사이트를 운영중인데 최근에 방문자가 들어서 그런지 문제가 좀 생기고 있습니다.
버전 : sqlserver 2008
문제 화면과, 설정화면은 첨부 파일에 넣어두었습니다.
이벤트로그에보면
"메모리가중으로 인해 AppDomain xx(master.dbo.) 이가 언로드 표시 되었습니다."
라는 에러 로그가 남으며 어떨때는 언로드 되었다 바로 업로드되서 문제가 없지만 어떨때는 다시 업로드가 되지 않아 master쪽에서 등록한
공용함수들이 동작하지 않아 문제가 되고 있습니다.
현재 사이트가 작어 4GB 메모리로 운영되었지만 32GB로 운영 업그레이드 예정에 있으며
이와 관련해서 sqlserver 메모리를 24기가 정도만 사용하게 설정하려고 합니다.
첨부파일 붉은색 표시에보면 메모리부분에 값을 입력하려고 하는데 MB단위라고 나와 있는데 해당부분에
24576 을 입력하면 되는것 맞나요? 지금 자동 디폴트값으로 봐선 어마 어마한 양을 사용가능하게 되어 잇는것 같아서
혹시나 아시는분 있으시면 답변 부탁드립니다.
Comment 2
-
군고구마
2016.02.29 18:27
-
장성원_305526
2016.02.29 19:16
MAX만 지정하려고 했는데 MIN과 같이 지정해야겠군요...
제가 아는 지식선에서 이야기 드리면, SQL Server의 Min /Max 메모리는 중요합니다.
보통 OLTP환경에서 DBMS만 사용하고 따로 프로그램을 돌리지 않는 DB서버로만 사용 할 경우 Min / MAX를 80~90% 이상 점유하도록 만들어 둡니다.
아래의 내용을 참고 하시면 좋을 듯 합니다.
5. Memory 설정
설정법(UI) : SSMS 접속 -> 최상위 SQL Server 로 되어 있는 부분 우클릭 -> 속성 -> 메모리 부분 클릭 -> 최소,최대 서버 메모리 부분 변경
최소 서버메모리는 SQL Server가 최소 유지할 메모리를 뜻하여, 최대 서버 메모리는 최대 SQL Server가 사용 할 수 있는 메모리를 뜻 합니다.
설정법 (쿼리) :
sp_configure 'max server memory (MB)', 14000 --최대메모리지정
sp_configure 'min server memory (MB)', 12000 --최소메모리지정
SQL Server는 메모리를 동적으로 관리합니다. 필요 할때마다 메모리를 점유하며, OS에서 필요하다고 하기 전까지 그 메모리를 반환하지 않습니다. 그 이유는 재사용성 때문입니다.
SQL Server가 프로시저 및 파라미터 쿼리에 속도가 빠른 이유는 컴파일 이후에 메모리에 상주시켜놨다가 바로 실행 시키기 때문입니다.
SQL Server에서 최소/최대 메모리를 꼭 설정해야 하는 이유는 설정하지 않을 시 SQL Server는 기본적으로 최소/최대에 대한 제한이 없습니다.
이렇게 제한이 없으므로, 부하가 많은 시스템에서 I/O가 지속적으로 발생하면 SQL Server는 OS에 메모리를 계속 요구하며 할당받아 사용하게 됩니다. 하지만 이는 OS 및 다른 응용
프로그램에 동작에 영향을 줄 수 있습니다. 반대로 OS에서 다른 응용프로그램에서 많은 공간의 메모리를 사용하고 있다면 SQL Server가 할당 받아 사용할 메모리가 줄어들게 됩니다.
SQL Server의 버퍼풀 메모리가 부족 할 경우 잦은 I/O를 발생시키고 쿼리를 실행하는데 메모리를 얻지 못하여, 대기가 발생 할 수 있습니다.
주로 SQL Serve가 설치된 서버라면 SQL Server 이외에 다른 프로그램을 돌리지 않는 것이 일반적입니다. 하여, SQL Server 전용 서버라면 80~90%까지 (전체 메모리에) SQL Server가 점유하게 합니다.