it-swarm-eu.dev

Jak ovládat nadměrné používání RAM serverem SQL?

Databázový server, který používám, používá 6 různých instancí serveru SQL. Má 48 GB RAM. A jedna z nich spotřebovává více než 10 GB RAM, celková spotřeba je prozatím 20 GB. Spotřeba RAM neustále roste. Několik dní před tím, než používala více než 40 GB RAM a server reagoval velmi pomalu. Aplikace zobrazuje selhání při ukládání dat.

Takže jsem restartoval služby serveru SQL.

Jakmile byly služby restartovány, využití kleslo na 4 GB, ale nyní roste. A obávám se, že během 4 nebo 5 dnů vyroste až 40 GB a server zpomalí.

Myslím, že restartování služby není dobrá volba.

Z různých zdrojů jsem také zjistil, že můžeme nastavit maximální velikost využití paměti pro SQL Server. A nejsem si zcela jistý, jestli to pomůže nebo ne. Nemohu to otestovat, protože server používá produkční databázi a bylo by riziko, kdyby se služba zastavila při úpravě nastavení na serveru SQL.

Může někdo pomoci s tímto problémem?

13
Shreejan sharma

To je záměrné. SQL Server by měl využívat veškerou dostupnou paměť, protože ukládá stále více dat do paměti, takže není nutné se vracet na disk, aby znovu a znovu získaly stejnou paměť.

Pokud potřebujete omezit množství paměti, které používá jedna instance serveru SQL, můžete to provést v nástroji SQL Server Management Studio klepnutím pravým tlačítkem na název instance v Průzkumníku objektů a výběrem vlastností. Poté vyberte kartu paměti a nastavte maximální množství paměti, které bude SQL Server moci používat. Nyní to nebude omezovat všechny aspekty serveru SQL na tuto velikost paměti. Toto řídí pouze fond vyrovnávacích pamětí a mezipaměť plánu provádění. Věci jako CLR, fulltext, skutečná paměť používaná exe soubory serveru SQL, agenta SQL, rozšířené uložené procedury atd. Nejsou tímto nastavením ovládány. Tyto další věci však obvykle nepotřebují tolik paměti, je to oblast vyrovnávacích pamětí a mezipaměť plánu provádění, které vyžadují velkou část paměti.

Pokud toto nastavení nastavíte na jednu instanci, budete je chtít nastavit ve všech instancích, aby se navzájem nestoupaly.

14
mrdenny