Fragensteller
SQL Server 2008 R2, Arbeitsspeicher Problem

Frage
-
Guten Tag,
wir haben bei einem Kunden einen SQL 2008 R2 Server laufen mit zwei Datenbanken in einer Instanz.
1 DB = 600MB
2 DB = 4.800 MB
Seit dem 19.10.2011 wird der Prozess SQLServr.exe nicht größer, als 116MB.
In der Instanz haben wir einen Min. Wert von 1024 und im Max. 10240MB eingetragen.
Das interessiert den SQL-Server aber leider so gar nicht.
Wir haben auf einem weiteren Server dem Kunden nun einen SQL 2008 Express hingestellt, damit der Kunde
erstmal arbeiten kann. Das ist natürlich nicht befriedigend, da die ganze Warenwirtschaft extram langsam läuft.
Was können wir mit dem Speicher tun?
Ecktdaten vom Server
48GB Arbeitsspeicher
16 Kern CPU
1,5TB freier HDD Speicherplatz
Das anlegen einer neuen Instanz hat leider keine Abhilfe geschaffen!
Alle Antworten
-
Hallo,
hilfreich wäre: Welche Edition von SQL Server?
Wenn der Server soviel Speicher hat, wieso wird der Speicher auf 10 Gb begrenzt
(auch wenn der wohl für die kleinen Datenbanken reichen dürften)?
Laufen noch weitere Prozesse, die viel Speicher benötigen?Evtl. sinnvoll wäre, den Speicher zu sperren, siehe
Vorgehensweise: Aktivieren der Option Sperren von Seiten im Speicher (Windows)Einige Hintergrundinfos liefert dazu:
How to reduce paging of buffer pool memory in the 64-bit version of SQL ServerGruß Elmar
-
Hallöchen,
verwendet wird Enterprise 64-Bit.
Es läuft auf dem Server noch Exchange 2010, diesen habe ich auf 3GB begrenzt
und dieser hält sich auch daran.
Aber warum übernimmt der SQL die eingestellten Werte aus der Console nicht?
Gesamt mit Exchange verwendet der Server nun 10GB. -
Hallo Christian,
wenn Du die Server Eigenschaften aufrufst und zu der Einstellung für den Arbeitsspeicher gehst und dort unten auf "Ausgeführte Werte" ("Running Values") wechselst, wird Dir dort der gleiche Wert angezeigt.
Oder alternative als SQL Statement; was liefert Dir das für "config_value" und "run_value"?
EXEC sp_configure 'max server memory (MB)'
Olaf Helper
* cogito ergo sum * errare humanum est * quote erat demonstrandum *
Wenn ich denke, ist das ein Fehler und das beweise ich täglich
Blog Xing -
Hallo Christian,
das ist normal. "Ausgeführte Werte" zeigt Dir die aktuellen aktiven Einstellungen an. Manche Einstellungen werden erst nach einem SQL Server Neustart wirksam, weshalb es Unterschiede geben kann; wobei die Speichereinstellung nicht dazu gehört.
Hast Du mal den Maximalen Speicher hoch gestellt, ob dann mehr Speicher verwendet wird (Aktivitäten vorausgesetzt, die den Speicher auch benötigen & anfordern)?
Olaf Helper
* cogito ergo sum * errare humanum est * quote erat demonstrandum *
Wenn ich denke, ist das ein Fehler und das beweise ich täglich
Blog Xing -
Hallo Olaf,
ich kann nun erst richtig mit dem testen anfangen, da die Mitarbeiter gerade erst Feierabend gemacht haben.
Ich habe die Datenbanken jetzt auf einem Express (2. Server) laufen. Die Datenbanken werden gerade zurück
kopiert um den richtigen Datensatz zu verwenden.
Wenn ich den Speicher hoch stelle, so auf 700GB, welchen er gar nicht hat, wird ihm plötzlich 60MB mehr zugesichert!
Ich habe es nun nochmal auf 20GB gestellt und werde gleich die WaWi mit der aktuellen Datenbank starten und mal testen,
dann kann ich mehr sagen, wie sich der Prozess verhält!
PS: Wir sind fast Nachbarn...! ;-) -
Wenn ich den Speicher hoch stelle, so auf 700GB, welchen er gar nicht hat, wird ihm plötzlich 60MB mehr zugesichert!
Hallo Christian,das hat nichts zu sagen. Erst wenn der SQL Server mehr Speicher benötigt, wird er mehr anfordern; solange bleibt er auf dem Level, deshalb der Hinweis auf "Aktivitäten vorausgesetzt...". Also stress den SQL Server mal, um die Auswirkung zu testen.
Wenn Du das "Minimum..." hochstellst, sollte er den Speicher allokieren, auch wenn er ihn nicht benötigt.
Olaf Helper
* cogito ergo sum * errare humanum est * quote erat demonstrandum *
Wenn ich denke, ist das ein Fehler und das beweise ich täglich
Blog Xing -
Hallo Christian,
hast Du schon versucht, den "Minimum Arbeitsspeicher" hoch zu setzen; wenn dann der verwendete Speicher "sqlservr.exe" nicht auf den Wert hoch geht, könnte wirklich ein Problem vorliegen.
Der Wert kann problemlos im laufenden Betrieb geändert werden und sich innerhalb ein paar Sekunden auswirken.
Olaf Helper
* cogito ergo sum * errare humanum est * quote erat demonstrandum *
Wenn ich denke, ist das ein Fehler und das beweise ich täglich
Blog Xing -
Nein, das geht nur über SSMS als GUI oder über T-SQL mit der Stored Procedure "sp_configure"
Olaf Helper
* cogito ergo sum * errare humanum est * quote erat demonstrandum *
Wenn ich denke, ist das ein Fehler und das beweise ich täglich
Blog Xing -
Hallo Olaf,
du hast etwas weiter oben geschrieben:
Wenn Du das "Minimum..." hochstellst, sollte er den Speicher allokieren, auch wenn er ihn nicht benötigt.
bzw.:
Hallo Christian,
hast Du schon versucht, den "Minimum Arbeitsspeicher" hoch zu setzen; wenn dann der verwendete Speicher "sqlservr.exe" nicht auf den Wert hoch geht, könnte wirklich ein Problem vorliegen.
Der Wert kann problemlos im laufenden Betrieb geändert werden und sich innerhalb ein paar Sekunden auswirken.Hier unterlegst Du einem kleinen Irrtum. Der Speicher wird nicht sofort allokiert, sondern erst wenn der SQL Server diesen benötigt und anfordert. Es wird der Speicher jedoch nicht mehr freigegeben. Dieser Vorgang geht solange weiter bis die Grenze "Minimaler Serverarbeitsspeicher" überschritten wird. Erst jetzt wird auf Anforderung des Betriebssystem wieder Arbeitsspeicher freigegeben, wenn momentan nicht benötigt, bis zu der Grenze "Minimaler Serverarbeitsspeicher".
Gruß Falk
-
Guten Abend,
das habe ich mir schon gedacht!
Daher habe ich immer möglichst viele Verbindungen zum SQL auf und produziere Anfragen.
Aber wenn sich dann schon einige Benutzer nicht anmelden können, dann erhört der den
Speicher ja leider nicht! Über diese paar MB komme ich nicht rüber....!
Verbinde ich die WaWi mit einem anderen SQL-Server, da greift er gleich voll durch und zieht
sich 500-600MB. -
Hi Christian,
soweit ich das in Erinnerung habe eignet sich der Taskmanager NICHT zum Darstellen des aktuell durch den SQL Server belegten Arbeitsspeichers. Der tatsächlich genutzte Arbeitsspeicher lässt sich zuverlässig mit
dbcc memorystatus
darstellen.
Viele Grüße
Turan
- Bearbeitet Turan Diler Samstag, 10. Dezember 2011 12:08
-
Hallo Falk,
ich irre mich häufiger, aber laut Doku
Minimaler Serverarbeitsspeicher (in MB)
Gibt an, dass SQL Server mit der angegebenen Mindestgröße des zugeordneten Speichers beginnen und unterhalb dieses Werts keinen Speicher freigeben sollte...sollte der SQL Server den min. Speicher gleich belegen. Bisher hat das auch immer funktioniert, jetzt gerade habe ich es mal mit meinem 2008R2 ausprobiert, und was ich da im Taskmanager, will auch nicht passen. Laut Doku sollte Arbeitsspeicher -Arbeitssatz das richtige eigentlich anzeigen, aber wer weiß, da könnte Turan schon Recht haben.
Im "Serverdashboard" wird mir ein Wert angezeigt, der fast stimmen können; ... abgesehen davon, das um 3 Dekaden zu hoch ist :-)
Olaf Helper
* cogito ergo sum * errare humanum est * quote erat demonstrandum *
Wenn ich denke, ist das ein Fehler und das beweise ich täglich
Blog Xing -
Hallo Olaf,
in anderen Stellen der Doku wird dies aber anders beschrieben. Siehe hier.
Es wäre auch etwas Unsinnig viel Serverarbeitsspeicher zu belegen obwohl dieser gar nicht benötigt wird. Was übrigens stimmt ist das kein Speicher freigegeben wird, unterhalb der Grenze.
Gruß Falk