Serwer bazy danych, którego używam, działa w 6 różnych instancjach SQL Server. Ma 48 GB pamięci RAM. Jeden z nich zużywa ponad 10 GB pamięci RAM, całkowite zużycie wynosi na razie 20 GB. Zużycie pamięci RAM stale rośnie. Kilka dni wcześniej zużywało ponad 40 GB pamięci RAM, a serwer reagował bardzo wolno. Aplikacja pokazuje awarie podczas zapisywania danych.
Ponownie uruchomiłem usługi SQL Server.
Po ponownym uruchomieniu usług zużycie spadło do 4 GB, ale teraz rośnie. Obawiam się, że w ciągu 4–5 dni powiększy się do 40 GB i spowolni serwer.
Ponowne uruchomienie usługi nie jest dobrą opcją.
Odkryłem również z różnych źródeł, że możemy ustawić maksymalny rozmiar pamięci dla SQL Server. I nie jestem pewien, czy to pomoże, czy nie. Nie mogę tego przetestować, ponieważ serwer korzysta z produkcyjnej bazy danych i byłoby to ryzykowne, gdyby usługa zatrzymała się podczas modyfikowania ustawienia w SQL Server.
Czy ktoś może pomóc w rozwiązaniu tego problemu?
Odpowiedzi:
To jest z założenia. SQL Server powinien wykorzystywać całą dostępną pamięć, ponieważ przechowuje coraz więcej danych w pamięci, dzięki czemu nie musi wracać na dysk, aby uzyskać tę samą pamięć w kółko.
Jeśli chcesz ograniczyć ilość pamięci używanej przez pojedyncze wystąpienie programu SQL Server, możesz to zrobić w SQL Server Management Studio, klikając prawym przyciskiem myszy nazwę wystąpienia w Eksploratorze obiektów i wybierając właściwości. Następnie wybierz kartę pamięci i ustaw maksymalną ilość pamięci, z której SQL Server będzie mógł korzystać. Teraz nie ograniczy to wszystkich aspektów SQL Server do takiej ilości pamięci. Kontroluje to tylko pulę buforów i pamięć podręczną planu wykonania. Rzeczy takie jak CLR, pełny tekst, rzeczywista pamięć używana przez pliki exe programu SQL Server, SQL Agent, rozszerzone procedury składowane itp. Nie są kontrolowane przez to ustawienie. Jednak te inne rzeczy zwykle nie potrzebują tyle pamięci, to pula buforów i pamięć podręczna planu wykonania, które wymagają dużej ilości pamięci.
Jeśli ustawisz to ustawienie na jedną instancję, będziesz chciał ustawić ją na wszystkich instancjach, aby się nie nadepnęły.
źródło