it-swarm.com.de

SQL Server belegt mehr als den zugewiesenen Speicher. Möglicher Speicherverlust

Verwenden von SQL Server 2012 64-Bit (v11.0.6020.0 - 2012 SP3)

Unten ist das Szenario:

In unserer Produktion haben wir 32 GB DDR3 RAM installiert:

(enter image description here

Das maximale Speicherlimit wurde in SQL Server auf 16 GB festgelegt, dh 50% Kapazität:

(enter image description here

Wenn ich den Task-Manager starte und überprüfe, ob der Speicher belegt ist, werden 16 GB angezeigt, was korrekt ist:

(enter image description here

Wenn ich jedoch den von Percentage belegten Speicher auswähle, werden 80% bis 85% angezeigt, was NICHT RICHTIG ist:

(enter image description here

Dies wird weiter zunehmen, bis es mehr als 95% belegt und die

  1. Das gesamte System wird langsamer
  2. Bei Abfragen tritt eine Zeitüberschreitung auf

Die einzige Möglichkeit, dies zu korrigieren, ist ein Neustart des Servers

Meine Fragen sind

  1. Verliert SQL Server Speicher?
  2. Gibt es eine schnelle Lösung, damit ich nicht neu starten muss?
  3. Permanente Auflösung?
5
Sunny

Meine Fragen sind: Verliert SQL Server Speicher?

Sehr unwahrscheinlich, aber Sie sollten SQL Server 2012 SP4 so schnell wie möglich einplanen. Aus meiner Erfahrung in der Vergangenheit konnte ich sagen, dass SQL Server und andere Anwendungen wie SSAS und SSRS alle auf demselben Computer ausgeführt werden und SQL Server möglicherweise unter Speicherdruck steht, was auch bei SSAS/RS der Fall sein kann. Ich habe viele Systeme wie dieses gesehen und alles läuft auf Speicherdruck hinaus.

Sie haben 32 G RAM und Sie haben SQL Server nur 16 G gegeben, machen Sie es auf 20 G und sehen Sie, ob diese Hilfe. Das Hinzufügen von mehr Speicher würde definitiv helfen, wenn Sie es versuchen können.

Es kann eine Vielzahl von Gründen geben, warum Abfragen eine Zeitüberschreitung aufweisen, und Fehlerbehebung bei SQL Server-Leistungsproblemen kann Ihnen dabei helfen, die Hauptursache dafür zu finden.

Wenn ich jedoch den von Percentage belegten Speicher auswähle, werden 80% bis 85% angezeigt, was NICHT RICHTIG ist:

Ich würde zunächst sagen, dass der Task-Manager kein korrekter Ort ist, um den Speicherverbrauch von SQL Server zu messen. Er gibt Ihnen keinen korrekten Wert an, wenn das SQL Server-Dienstkonto über LPIM-Berechtigung (Locked Pages in Memory) verfügt. Dies liegt daran, dass der Task-Manager normalerweise den Speicher für private Prozessbytes verfolgt, der über die VirtualAlloc () -Funktion pageable und zugewiesen werden kann. Bei einem LPIM-Teil wird die Speicherzuweisung jedoch von der AWE-API vorgenommen, die NICHT pageable ist, sodass der Task-Manager ihn nicht verfolgt und dies zu Fehlern führen kann Wert. Für den Prozentsatz, den Sie suchen, ist tatsächlich Percentage of Process Private bytes nicht der vollständige Speicher und es werden keine relevanten Informationen bereitgestellt, also hören Sie einfach auf, sie anzusehen.

Es ist ganz normal, dass SQL Server den ihm zugewiesenen Speicher verwendet und um zu wissen, wie viel physischen Speicher SQL Server verwendet, verwenden Sie bitte die Abfrage

select * from sys.dm_os_process_memory

PS: Es wird immer empfohlen, andere Anwendungen (wenn möglich) auf einen anderen Computer zu verschieben und SQL Server ausschließlich auf dem eigenen System ausführen zu lassen. Dadurch wird SQL Server schneller und besser ausgeführt

5
Shanky

Die Antwort ist in einem KB-Artikel beschrieben.

In SQL Server 2012 und späteren Versionen wird möglicherweise mehr Speicher zugewiesen als in der Einstellung für den maximalen Serverspeicher angegeben. Dieses Verhalten kann auftreten, wenn der Wert für den Gesamtserverspeicher (KB) bereits die Einstellung für den Zielserverspeicher (KB) erreicht hat (wie durch den maximalen Serverspeicher angegeben). Wenn aufgrund der Speicherfragmentierung nicht genügend zusammenhängender freier Speicher vorhanden ist, um den Bedarf an mehrseitigen Speicheranforderungen (mehr als 8 KB) zu decken, kann SQL Server eine Überbindung durchführen, anstatt die Speicheranforderung abzulehnen.

Es ist wahrscheinlicher, dass Sie auf dieses Problem stoßen, als dass Sie einen Fehler oder einen Speicherverlust entdeckt haben.

Sie sollten den Ratschlägen der anderen veröffentlichten Antworten folgen: Wenden Sie SP4 an und überlegen Sie genauer, welche anderen Apps und Komponenten Sie auf die SQL Server-Box stapeln, für die Sie Tausende von Dollar pro Kern bezahlen.

3
Erik Darling

Nein. Das ist normal. Auf Ihrem Datenbankserver sind zu viele Anwendungen installiert. Starten Sie die Migration Ihrer Datenbank (SQL Server-Datenbankmodul) auf einen eigenen Server oder deinstallieren Sie alle anderen Anwendungen auf dem Datenbankserver.

Derzeit ist auf Ihrem Server Folgendes installiert: IIS, RS, AS, IS, mongodb installiert. Nicht zu erwähnen, wenn Sie Überwachungstools oder Antivirenprogramme installiert haben. Wenn Sie sich beim Server anmelden, verwenden Sie auch Speicher. Filtertreiber verwenden auch Speicher.

Schauen Sie sich diesen Blog-Beitrag von Jonathan an. Angenommen, Sie haben einen Barebone-Datenbankserver (ohne dass die andere installierte Anwendung um Speicher kämpft). Sie können mindestens 27 GB Speicher für Ihren SQL Server haben.

1
user37701