Der Ressourcenmonitor gibt auf einem Server, auf dem SQL Server

Dieser Artikel enthält weitere Informationen zum Ressourcenmonitor, der keine Ergebnisse liefert.

Ursprüngliche Produktversion: SQL Server
Ursprüngliche KB-Nummer: 2216485

Symptome

Auf einem Server, auf dem Microsoft SQL Server 2008 oder höher ausgeführt wird, protokolliert der Resource Monitor-Task alle 5 Sekunden die folgende Meldung:

Date_And_Time Server Using 'dbghelp.dll' version '4.0.5'
Date_And_TimeServer **Dump thread - spid = 0, PSS = 0x0000000000000
000, EC = 0x0000000000000000
Date_And_TimeLogon Login succeeded for user 'OPENTEXT\sqlcrmusr'. Connection: trusted. [CLIENT:
IP_Address]
Date_And_Timespid78 Error: 4014, Severity: 20, State: 2.
Date_And_Timespid78 A fatal error occurred while reading the input stream from the network. The session will be terminated.
Date_And_TimeServer ***Stack Dump being sent to Drive:\MSSQL2005\LOG\SQLDump####.txt
Date_And_TimeServer * *******************************************************************************
Date_And_TimeServer *
Date_And_TimeServer * BEGIN STACK DUMP:
Date_And_TimeServer *
Date_And_Timespid 0
Date_And_TimeServer *
Date_And_TimeServer * Non-yielding Resource Monitor
Date_And_TimeServer *
Date_And_TimeServer * *******************************************************************************
Date_And_TimeServer * -------------------------------------------------------------------------------
Date_And_TimeServer * Short Stack Dump
Date_And_TimeServer Stack Signature for the dump is 0x000000000000005C
Date_And_Time,Server,Unknown,Resource Monitor (0x9b0) Worker 0x0000000003A2C1C0 appears to be non-yielding on
Node_#. Memory freed: 0 KB. Approx CPU Used: kernel 0 msnull user 0 msnull Interval:
Interval_value.

Ursache

Der Ressourcenmonitortask wird regelmäßig aktiviert, um auf Speicherereignisse zu lauschen, die als niedrig, hoch oder stabil klassifiziert sind. Der Monitor benachrichtigt Ereignisabonnenten, wenn diese Ereignisse auftreten.

Diese Speicherereignisse können für SQL Server extern sein. Externe Ereignisse umfassen Benachrichtigungen vom Betriebssystem und sind systemweit. Andere Ereignisse sind intern in SQL Server. Interne Ereignisse umfassen Benachrichtigungen aus dem Pufferpool und sind prozessweit. Wenn solche Benachrichtigungen empfangen werden, kürzen verschiedene Speicherverbraucher ihre Speicherauslastung.

Hinweis

Consumer können Speicherbearbeiter sein, bei denen es sich um Cachespeicher, Benutzerspeicher oder Objektspeicher handelt.

Wenn bestimmte Speicherconsumer eine große Menge an Arbeitsspeicher verwenden, kann die Vorbereitung der von den Consumern durchgeführten Kürzungen sehr lange dauern.

Der Task Scheduler Monitor wird alle 5 Sekunden ausgeführt. Der Zeitplanmonitor überprüft, ob der Ressourcenmonitor in den letzten 60 Sekunden von einem Consumer zu einem anderen verschoben wurde. Wenn der Scheduler Monitor erkennt, dass der Ressourcenmonitor 60 Sekunden lang nicht an einem Consumer vorbeigezogen ist, interpretiert der Zeitplanmonitor dieses Szenario so, dass der Ressourcenmonitor in einen Nicht-Ertrag-Zustand wechselt. Diese Interpretation bewirkt, dass der Zeitplanmonitor die im Abschnitt Symptome erwähnte Fehlermeldung protokolliert.

Hinweis

Ab SQL Server 2019 wird das 60-Sekunden-Intervall auf 120 Sekunden erhöht. Dieser Anstieg reduziert die Häufigkeit dieser Diagnosebenachrichtigungen. Außerdem wird die Generierung von Speicherabbilddateien reduziert.

Diese Meldungen werden auch ausgelöst, wenn die Geschwindigkeit, mit der der Ressourcenmonitor Arbeitsspeicher freigibt, weniger als 2 MB alle 5 Sekunden beträgt.

Diese Meldungen sind nur ein Hinweis darauf, dass der Ressourcenmonitor damit beschäftigt ist, große Consumer zu bereinigen. Diese Meldungen weisen nicht unbedingt auf ein Problem mit dem Ressourcenmonitor selbst hin.

Lösung

Beginnend mit den folgenden Service Packs erweitert sich die Nicht-Ertrag-Resource Monitor-Nachricht, um den Speicherbearbeiter einfach zu isolieren, was zu der Bedingung führt, die nicht liefert:

  • Service Pack 2 von Microsoft SQL Server 2008
  • Service Pack 1 von Microsoft SQL Server 2008 R2

Die neue Nachricht ähnelt dem folgenden Beispiel:

Resource Monitor (0x9b0) Worker 0x0000000003A2C1C0 appears to be non-yielding on Node Node_#. Memory freed: 0 KB. Last wait: > lastwaittype. Last clerk: type clerk_type, name clerk_name. Approx CPU Used: kernel 0 ms, user 0 ms, Interval: Interval_value.

Im Folgenden werden die verschiedenen Felder beschrieben, die in dieser Meldung verwendet werden:

  • Freigegebener Arbeitsspeicher: Dieses Feld gibt an, wie viel Arbeitsspeicher vom Ressourcenmonitor für das angegebene Intervall freigegeben wird. Die Messung erfolgt in Kilobytes. Wenn die Geschwindigkeit, mit der der Arbeitsspeicher freigegeben wird, nicht alle 5 Sekunden 2 MB überschreitet, erkennt der Scheduler Monitor diese Bedingung als bedingungslos.

  • Letzte Wartezeit: Dieses Feld ist der letzte Wartetyp für den Ressourcenmonitorthread. Sie können dieses Feld in Kombination mit dem Approx CPU Used Feld verwenden. Diese Feldkombination kann identifizieren, ob der Ressourcenmonitorthread ausgeführt wird oder auf einen wesentlichen Teil des Intervalls wartet.

  • Letzter Sachbearbeiter: Dieses Feld ist der Typ und Name des Speicherbearbeiters, der den Arbeitsspeicher gekürzt hat, als die bedingungsfreie Bereitstellung auftrat.

  • Ungefähre CPU-Auslastung: Dieses Feld ist die Kernel- und Benutzerzeit, die vom Ressourcenmonitor verwendet wird, gemessen in Millisekunden. Sie können dieses Feld zusammen mit anderen Feldern verwenden, um zu überprüfen, ob der Ressourcenmonitor während des angegebenen Intervalls Fortschritte macht.

  • Intervall: Dieses Feld ist die Zeit, die verstrichen ist, seit der letzte Sachbearbeiter benachrichtigt wurde, gemessen in Millisekunden.

Sie können diese Meldung verwenden, um die Quelle der Benachrichtigung über wenig Arbeitsspeicher zu identifizieren. Sie können auch die RING_BUFFER_RESOURCE_MONITOR Einträge aus dem Zeitpunkt der Nachricht verwenden.

Ressourcen

Weitere Informationen zum Interpretieren des RING_BUFFER_RESOURCE MONITOR finden Sie im folgenden Techcommunity-Blogbeitrag:

Der Ressourcenmonitortask kann speicherbezogene Leistungsprobleme in SQL Server beheben. SQL Server lauscht auf Speicherbenachrichtigungen und reagiert darauf. Weitere Informationen zu diesen Elementen finden Sie in den folgenden MSDN-Blogartikeln: