none
SQL Server 2008 R2, Arbeitsspeicher Problem RRS feed

  • 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!

    Freitag, 9. Dezember 2011 13:12

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 Server

    Gruß Elmar

    Freitag, 9. Dezember 2011 16:38
  • 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.
    Freitag, 9. Dezember 2011 16:48
  • 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
    Freitag, 9. Dezember 2011 17:01
  • Hallo Olaf,

    wenn ich auf "Ausgeführte Werte" klicke, wird alles nur ausgegraut und ich sehe nur meine vorgegebenen Werte (ausgegraut).

    Mehr leider nicht....

    Freitag, 9. Dezember 2011 17:04
  • 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
    Freitag, 9. Dezember 2011 17:16
  • 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...! ;-)

    Freitag, 9. Dezember 2011 17:22
  • 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
    Freitag, 9. Dezember 2011 17:30
  • Hallöchen,

    leider kenne ich mit in der Warenwirtschaft nicht so gut aus, um den SQL stressen zu können.

    Gibt es da nicht ein Tool für, um den SQL mal zu beschäftigen?

    Freitag, 9. Dezember 2011 17:39
  • Hallo Olaf,

    so, bei 389MB ist schluss! Ab da können sich auch keine weiteren Benutzer an der WaWi anmelden.

    Hat noch jemand eine Idee?

    Freitag, 9. Dezember 2011 17:49
  • 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
    Freitag, 9. Dezember 2011 17:54
  • Hallöchen,

    das habe ich gerade gemacht! Min. 10GB max. 20GB.

    Das ding bewegt sich keinen mm.

    Kann man die Werte nicht irgendwo per MMC hinterlegen?

    Freitag, 9. Dezember 2011 17:55
  • 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
    Freitag, 9. Dezember 2011 18:04
  • Nicht gut....!

    Dann bin ich nun mit meinen Ideen, am ende....!

    Auch das ServicePack hat keine abhilfe geschaffen....! :-(

    Freitag, 9. Dezember 2011 18:07
  • 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
    Blog Falk Krahl
    Freitag, 9. Dezember 2011 20:43
  • 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.
    Freitag, 9. Dezember 2011 21:33
  • 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
    Samstag, 10. Dezember 2011 12:07
  • 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
    Sonntag, 11. Dezember 2011 09:05
  • 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
    Blog Falk Krahl
    Sonntag, 11. Dezember 2011 19:11