Wir haben einen dedizierten SQL Server 2008 R2-Computer, auf dem einige seltsame Speicherprobleme auftreten. Der Computer selbst verfügt über zahlreiche Ressourcen, darunter zwei Quad-Core-Prozessoren, 16 GB RAM und 64-Bit-Windows Server 2008 R2 Enterprise (Dell PowerEdge 2950). .
Das seltsame Problem besteht darin, dass das System 82% des verwendeten Speichers meldet, sqlservr.exe jedoch nur 155 MB belegt. Ich vermute, dass SQL Server das Problem ist, weil der Speicherverbrauch nach einem Neustart des Prozesses sqlservr.exe für einen bestimmten Zeitraum wieder normal ist.
Hat jemand eine Idee, wie ich dieses Problem aufspüren kann?
Danke, Jason
sql-server-2008-r2
memory
process
typefragger
quelle
quelle
Antworten:
Sie erhalten vom Task-Manager kein genaues Bild der Speichernutzung, wenn das Konto, unter dem der Dienst ausgeführt wird, über die Sperrseiten mit Speicherberechtigung verfügt (Bearbeitung: gemäß Mark Rasmussens Kommentar / Link). Um festzustellen, wie viel Speicher verwendet wird, können Sie Folgendes überprüfen:
Ich kann mich nicht erinnern, ob es eine DMV oder eine Kombination davon gibt, die Ihnen die Gesamtspeicherzuordnung gibt, aber das Folgende zeigt den Großteil davon.
Die zweite Option ist in der Regel die interessanteste, nämlich die Pufferpoolzuweisung nach Datenbank. Hier wird der Löwenanteil verwendet, und es kann hilfreich sein, zu verstehen, welche Ihrer Datenbanken die größten Konsumenten sind.
quelle
In einem kürzlich erschienenen Artikel von Brent Ozar wird dieser Fall behandelt, wenn der Task-Manager den von SQLServer und seinen zusätzlichen Diensten belegten Speicher nicht korrekt anzeigt. Sie finden es hier: Ein Sysadmin-Handbuch zum Microsoft SQL Server-Speicher .
Zitat: " Warum verwendet SQLServer.exe nicht viel Speicher?
Wenn Sie von einem Remotedesktop auf einen Server zugreifen und sich den Task-Manager ansehen, wirkt die Mem-Verwendung von sqlservr.exe immer verrückt. Das ist nicht die Schuld von SQL Server. Der Task-Manager ist ein schmutziger, schmutziger Lügner. (Ich weiß, es hört sich so an, als würde der SQL-Typ die Schuld auf sich ziehen, aber nehmen Sie es für eine Sekunde mit.) Bei 64-Bit-Boxen ist diese Zahl etwas genauer, aber bei 32-Bit-Boxen ist sie einfach völlig falsch . Um wirklich ein genaues Bild davon zu erhalten, wie viel Speicher SQL Server verwendet, benötigen Sie ein Tool wie Process Explorer und müssen alle SQL Server-Prozesse identifizieren. Auf dem Server, den ich rechts zeige, befinden sich zwei SQL Server-Instanzen (von sqlservr.exe angezeigt) sowie die Sicherungstools SQL Agent, SQL Browser und SQL Server. Es ist nicht ungewöhnlich, dass SQL Server Analysis Services, Integration Services und Reporting Services auch auf demselben Server ausgeführt werden - alle davon belegen Speicher.
Wie viel Speicher verbraucht SQL? Ich werde es dir leicht machen. SQL Server verwendet den gesamten Speicher. Zeitraum."
Daher rate ich Ihnen, Marks Abfrage zu testen und ein besseres Tool für den Speicherbericht zu verwenden. Oder vertrauen Sie einfach Perfmon, um Speicher zu melden, nicht dem Task-Manager.
quelle
Die Größe des von SQL verwendeten Speichers, wie im Task-Manager angezeigt, ist hauptsächlich die Einstellung für den maximalen Speicher. So funktioniert die Min / Max-Einstellung:
Wenn der SQL Server gestartet wird, wird der Speicher auf die Mindestspeichereinstellung hochgefahren. Wenn Ihr SQL-Bedarf steigt, verwendet SQL mehr Speicher bis zur Einstellung "Maximaler Speicher". Der Speicher bleibt dann an diesem (maximalen) Punkt, selbst wenn die SQL-Nutzung abnimmt. Dadurch entsteht der Eindruck, dass SQL große Aufgaben ausführt und so viel Speicher verbraucht. In Wirklichkeit ist dieser Speicher von SQL reserviert.
Wenn auf dem Server ein Nicht-SQL-Speicherdruck vorliegt, gibt SQL den Speicher bis zum Einstellungspunkt für den Mindestspeicher frei. So werden die Speichereinstellungen verwendet. Mithilfe von Marks Skripten können Sie sehen, wie SQL diesen Speicher verwendet.
quelle