SQL Server에서 과도한 RAM 사용을 제어하는 ​​방법은 무엇입니까?


13

사용중인 데이터베이스 서버에서 6 개의 서로 다른 SQL Server 인스턴스를 실행하고 있습니다. RAM이 48GB입니다. 그리고 그중 하나는 10GB 이상의 RAM을 소비하고 있으며 현재 총 소비량은 20GB입니다. RAM 소비는 지속적으로 증가하고 있습니다. 며칠 전 40GB 이상의 RAM을 사용하고 있었고 서버가 매우 느리게 응답했습니다. 응용 프로그램은 데이터를 저장할 때 충돌 문제를 보여줍니다.

그래서 SQL Server 서비스를 다시 시작했습니다.

서비스가 다시 시작 되 자마자 사용량이 4GB로 줄었지만 이제는 증가하고 있습니다. 그리고 4 ~ 5 일 안에 최대 40GB까지 늘어나 서버 속도가 느려 질까 걱정됩니다.

서비스 다시 시작은 좋은 옵션이 아닙니다.

또한 다른 소스에서 SQL Server의 최대 메모리 사용 크기를 설정할 수 있다는 것을 알았습니다. 이것이 도움이 될지 확실하지 않습니다. 서버가 프로덕션 데이터베이스를 사용하고 있기 때문에이를 테스트 할 수 없으며 SQL Server에서 설정을 수정하는 동안 서비스가 중지되면 위험 할 수 있습니다.

아무도이 문제에 도움이 될 수 있습니까?


1
기본적으로 SQL은 성능을 최대화하기 위해 가능한 한 많은 RAM을 사용합니다. 이는 응용 프로그램 속도를 높이기 위해 일반적인 쿼리와 결과를 캐싱한다는 의미입니다. 페이징이 발생할 수있는 OS보고 한계까지 RAM 만 사용합니다. 이 동작을 무시할 수 있습니다. 이 MS 설명서를 참조하십시오. SQL Server에서 구성 옵션을 사용하여 메모리 사용을 조정하는 방법 또한 유용 할 수 있습니다. 올바른 SQL Server 구성 설정을 결정하는 방법

4
문제 가 아닙니다 -SQL Server를 위해 설계된 기본 동작입니다! 그리고 그렇습니다. SQL Server 프로세스를 다시 시작하는 것은 끔찍한 생각입니다 ..... SQL Server는 가능한 한 많은 양의 데이터와 인덱스 페이지를 메모리에 캐시하여 전체적인 시스템 성능을 최적화합니다. 이것이 SQL Server 시스템이 항상 전용 서버 여야하는 이유입니다. SQL Server 이외의 다른 작업은 없습니다.
marc_s

네 알았어요 그런 식으로 설계되었습니다. 그러나 SQL Server가 많은 메모리를 사용하면 서버 속도가 느려지고 보고서가 시간 초과됩니다. 따라서 SQL Server가 제한된 메모리를 사용하지 못하게하고 싶습니다.

4
그것은, 내가 그 그것을 만들 것이다라고 말하고 싶지만 수 실제로 SQL 서버는 많은 메모리로 사용하는 경우 더 적은 가능성 어려움이 제공하는 보고서를 가지고. 메모리 부여 및 기타 문제로 인해 문제가 발생하는 경우 인위적으로 SQL Server를 제한하거나 리소스를 경쟁하는 한 상자에 너무 많은 인스턴스를 배치하는 경우입니다.
Aaron Bertrand

그러나 SQL Server 서비스를 다시 시작한 후 왜 갑자기 보고서가 표시되기 시작했는지 궁금합니다. 보고서가 표시되지 않아서 너무 많은 고객이 응용 프로그램을 사용하고있을 수 있습니까?

답변:


14

의도적으로 설계된 것입니다. SQL Server는 메모리에 점점 더 많은 데이터를 저장하기 때문에 사용 가능한 모든 메모리를 사용해야하므로 동일한 메모리를 계속해서 얻기 위해 디스크로 돌아갈 필요가 없습니다.

단일 SQL Server 인스턴스가 사용하는 메모리 양을 제한해야하는 경우 개체 탐색기에서 인스턴스 이름을 마우스 오른쪽 단추로 클릭하고 속성을 선택하여 SQL Server Management Studio에서이 작업을 수행 할 수 있습니다. 그런 다음 메모리 탭을 선택하고 SQL Server에서 사용할 수있는 최대 메모리 양을 설정하십시오. 이제 이것은 SQL Server의 모든 측면을 그 정도의 메모리로 제한하지는 않습니다. 버퍼 풀과 실행 계획 캐시 만 제어합니다. CLR, 전체 텍스트, SQL Server exe 파일에서 사용하는 실제 메모리, SQL 에이전트, 확장 저장 프로 시저 등과 같은 사항은이 설정으로 제어되지 않습니다. 그러나 이러한 다른 것들은 일반적으로 많은 양의 메모리가 필요하지 않습니다. 버퍼 풀과 대량의 메모리가 필요한 실행 계획 캐시입니다.

한 인스턴스에서이 설정을 설정하면 서로 밟지 않도록 모든 인스턴스에서 설정해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.