Frage Eigener Speicherverbrauch in Windows Server 2008 R2


Ich hoffe, dass jemand helfen kann. Wir haben ein Windows Server 2008 R2 Maschine mit 16 GB RAM, die immer den gesamten verfügbaren Speicher durch etwas gegessen bekommt. Nichts in Taskmanager oder Ressourcenmonitor deckt jeden Prozess auf, der Speicher über 300 MB verwendet ... aber die Speicherbelegung auf dem Server beträgt 15,7 GB.

https://i784.photobucket.com/albums/yy129/ThunderPeel2001/ram-usage.gif

Die einzigen laufenden Dinge sind SQL Server 2008 und IIS7.5 (mit ASP.Net).

Hinweis: Die RAM-Nutzung nach einem Neustart beginnt niedrig und arbeitet sich nach oben. Nach etwa einer Woche finden wir uns in dieser Situation wieder.

Wie kann ich herausfinden, was unsere gesamte Erinnerung auffrisst? :(


20
2018-02-23 20:30


Ursprung


Wie genau war das? "Nachdem nun die RAM-Nutzung von SQL Server (min / max) auf 13 GB begrenzt wurde, sollte dies nicht erneut passieren."? Ich führe einen Windows 2008 R2 Rechner mit SQL 2008 R2 aus und ich stoße auf dasselbe Problem.
Es ist eine Einstellung in SQL Server Studio. Viel Glück! - Django Reinhardt
@ user72232: msdn.microsoft.com/en-us/library/ms178067.aspx - Tim Schmelter


Antworten:


Ist dies ein 64-Bit-Server - haben Sie die gesperrten Sperrseiten im Speicher aktiviert? SQL verbraucht wahrscheinlich den Rest Ihres Speichers Wenn Sie sich die Perfmon-Zähler ansehen, sehen Sie die Speicherzuweisung

Hier ist ein Artikel, der es ausführlich erklärt

Sie können die Leistungsindikatoren auch in SQL anzeigen

SELECT
    object_name
   ,Counter_name
   ,cntr_value
   ,ROUND(( cntr_value * 8192.0 ) / 1048576, 0) AS cntr_value_MB
FROM
    sys.dm_os_performance_counters
WHERE
    object_Name LIKE '%Buffer Manager%'
    AND RTRIM(counter_name) IN ( 'Free pages', 'Total pages',
                                 'Database pages' ) 
UNION SELECT
    object_name
   ,Counter_name
   ,cntr_value
   ,ROUND(( cntr_value / 1024 ), 0) AS cntr_value_MB
FROM
    sys.dm_os_performance_counters
WHERE
    counter_name IN ( 'Target Server Memory (KB)',
                      'Total Server Memory (KB)' )

15
2018-02-23 21:49



Das erklärt alles. Die Speicherbelegung war "alle verfügbaren verwenden" (dh 2000 TB) und wenn die Seiten im RAM gesperrt waren, dann hatte nicht alles Zugriff, wenn es verwendet wurde. Wenn Sie nun die RAM-Nutzung von SQL Server (min / max) auf 13 GB beschränken, sollte dies nicht erneut passieren. Ich habe jetzt mehrere Tools verfügbar, um auch Änderungen zu überwachen. Danke für Ihre Hilfe! - Django Reinhardt
>> Ich habe jetzt mehrere Werkzeuge zur Verfügung, um auch Änderungen zu überwachen - Welche Werkzeuge haben Sie benutzt? - David Christiansen


Schnelltest: Starten Sie SQL Server neu.
Ein weiterer schneller Test: IIS neu starten.

Du wirst sicher wissen, ob einer von ihnen der Schuldige ist oder ob du woanders hinschauen musst.


6
2018-02-23 21:24



Sieht aus wie SQL war der Schuldige! - Django Reinhardt


Es kann helfen, zu verwenden RamMap um zu sehen, wohin dein Gedächtnis geht.


3
2017-12-07 08:07





Haben Sie tatsächlich ein Speicherproblem?

Wird die Speichernutzung jemals erreicht? höher als der tatsächlich installierte Speicher, oder füllt es sich einfach und bleibt dort?

Wenn der Speicher gerade voll ist, aber kein Problem auftritt, dann erledigt nur der Cache seine Aufgabe. Speicher wird automatisch wieder freigegeben, wenn und wenn Sie tatsächlich brauchen.

Wenn die Speicherauslastung über das physische Limit hinausgeht und der Server zum Stillstand kommt, dann tritt ein Speicherleck auf und sollte definitiv debuggt werden.

Einige interessante Artikel zum Thema "Cache":

http://blogs.msdn.com/ntdebugging/archiv/2007/11/27/too-much-cache.aspx
http://blogs.msdn.com/ntdebugging/archive/2007/10/10/the-memory-shell-game.aspx
http://blogs.msdn.com/ntdebugging/archive/2009/02/06/microsoft-windows-dynamic-cache-service.aspx


1
2018-02-23 20:40



Nun, wir konnten keine kritischen Windows-Updates installieren, ohne den Server zurückzusetzen, weil der RAM nicht mehr ausreichte. Ziemlich lächerlich. Was immer es benutzte, wollte es nicht zurückgeben. - Django Reinhardt


Haben Sie Perfmon (speziell die SQL - Zähler) inspiziert, wie von jemandem in Dein anderer Thread?


0
2018-02-23 20:34



Ja, aber "Perfmon" zu überprüfen ist komplizierter als es klingt. - Django Reinhardt


Die erste Sache ist, wie bereits gesagt, flicken Sie es und sehen, ob das das Problem löst.

Zweitens, wenn das nicht funktioniert, benutze Process Explorer um einen besseren Überblick über Ihre Speicherbelegung zu bekommen. Gehen Sie in das Menü Ansicht, wählen Sie Spalten, Prozessspeicher und aktivieren Sie die Optionen Private Bytes, Virtuelle Größe und Arbeitssatzgröße. Sehen Sie, ob das anzeigt, was hier zu beschuldigen ist.

Ein drastischer Ansatz wäre dann, zu versuchen, Dienste zu stoppen. IIS zum Beispiel kann ein totaler Speicher Schwein sein, wenn Sie App-Pools und Web-Gärten falsch konfiguriert haben (zu viele von ihnen), so dass ein Kandidat ist.

Viel Glück!


0
2018-02-23 21:24