Auf dem von mir verwendeten Datenbankserver werden 6 verschiedene SQL Server-Instanzen ausgeführt. Es hat 48 GB RAM. Einer von ihnen verbraucht mehr als 10 GB RAM, der Gesamtverbrauch liegt derzeit bei 20 GB. Der RAM-Verbrauch wächst kontinuierlich. Einige Tage zuvor waren mehr als 40 GB RAM belegt 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, betrug die Auslastung nur noch 4 GB. Jetzt wächst sie. Und ich mache mir Sorgen, dass es in 4 oder 5 Tagen auf 40 GB anwächst und den Server langsam werden lässt.
Ein Neustart des Dienstes ist meiner Meinung nach keine 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?
Antworten:
Das ist so gewollt. SQL Server soll den gesamten verfügbaren Arbeitsspeicher nutzen, da immer mehr Daten im Arbeitsspeicher gespeichert werden, sodass nicht immer wieder auf den Datenträger zugegriffen werden muss, um denselben Arbeitsspeicher zu erhalten.
Wenn Sie den von einer einzelnen SQL Server-Instanz verwendeten Arbeitsspeicher 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 Speicherkapazität beschränken. Dies steuert nur den Pufferpool und den Ausführungsplan-Cache. Dinge wie CLR, Volltext, der von den SQL Server-Exe-Dateien, SQL Agent, erweiterten gespeicherten Prozeduren usw. verwendete tatsächliche Speicher werden von dieser Einstellung nicht gesteuert. Diese anderen Dinge benötigen jedoch normalerweise nicht so viel Speicher, da der Pufferpool und der Ausführungsplan-Cache 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.
quelle