it-swarm.com.de

Wie kann die übermäßige Verwendung von RAM durch SQL Server gesteuert werden?

Auf dem von mir verwendeten Datenbankserver werden 6 verschiedene SQL Server-Instanzen ausgeführt. Es hat 48 GB RAM. Und einer von ihnen verbraucht mehr als 10 GB RAM, der Gesamtverbrauch beträgt derzeit 20 GB. Der Verbrauch von RAM wächst stetig). Einige Tage zuvor wurden mehr als 40 GB RAM] verwendet, und der Server reagierte sehr langsam. Die Anwendung zeigt die Absturzprobleme beim Speichern von Daten.

Also habe ich die SQL Server-Dienste neu gestartet.

Sobald die Dienste neu gestartet wurden, sank die Auslastung auf 4 GB, aber jetzt wächst sie. Und ich mache mir Sorgen, dass es in 4 oder 5 Tagen auf 40 GB anwachsen und den Server langsam machen wird.

Ein Neustart des Dienstes ist meiner Meinung nach nicht die gute Option.

Ich habe auch aus verschiedenen Quellen herausgefunden, dass wir die maximale Speicherauslastung für SQL Server festlegen können. Und ich bin mir nicht ganz sicher, ob dies helfen wird oder nicht. Ich kann dies nicht testen, da der Server die Produktionsdatenbank verwendet und es ein Risiko darstellt, wenn der Dienst beendet wird, während die Einstellung in SQL Server geändert wird.

Kann jemand bei diesem Problem helfen?

13
Shreejan sharma

Das ist beabsichtigt. SQL Server soll den gesamten verfügbaren Speicher nutzen, da immer mehr Daten im Speicher gespeichert werden, sodass nicht immer wieder auf die Festplatte zurückgegriffen werden muss, um denselben Speicher zu erhalten.

Wenn Sie den Speicherbedarf einer einzelnen SQL Server-Instanz begrenzen müssen, können Sie dies in SQL Server Management Studio tun, indem Sie im Objekt-Explorer mit der rechten Maustaste auf den Instanznamen klicken und Eigenschaften auswählen. Wählen Sie dann die Registerkarte Speicher und legen Sie die maximale Speichermenge fest, die der SQL Server verwenden darf. Dies wird nicht alle Aspekte von SQL Server auf diese Speichermenge beschränken. Dies steuert nur den Pufferpool und den Ausführungsplan-Cache. Dinge wie CLR, Volltext, der tatsächliche Speicher, der von den SQL Server-Exe-Dateien verwendet wird, SQL Agent, erweiterte gespeicherte Prozeduren usw. werden von dieser Einstellung nicht gesteuert. Diese anderen Dinge benötigen jedoch normalerweise nicht so viel Speicher, sondern den Pufferpool und den Ausführungsplan-Cache, die den Großteil des Speichers benötigen.

Wenn Sie diese Einstellung für eine Instanz festlegen, möchten Sie sie für alle Instanzen festlegen, damit sie nicht aufeinander treten.

14
mrdenny