Resource Monitor gibt eine nicht nachgebende Bedingung auf einem Server ein, auf dem SQL Server

In diesem Artikel finden Sie weitere Informationen zu nicht nachgebender Ressourcenüberwachung.

Original Version des Produkts:   SQL Server
Ursprüngliche KB-Nummer:   2216485

Problembeschreibung

Auf einem Server mit Microsoft SQL Server 2008 oder einer höheren Version protokolliert der Task Ressourcen Monitor 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

Die Ressource-Monitor-Aufgabe wird regelmäßig aktiviert, um Speicherereignisse zu überwachen, die als niedrig, hoch oder konstant klassifiziert sind. Der Monitor benachrichtigt Ereignisabonnenten, wenn diese Ereignisse eintreten.

Diese Speicherereignisse sind möglicherweise extern für SQL Server. Externe Ereignisse umfassen Benachrichtigungen vom Betriebssystem und sind systemweit. Andere Ereignisse sind für SQL Server intern . Interne Ereignisse umfassen Benachrichtigungen aus dem Pufferpool und sind Prozess weit. Wenn solche Benachrichtigungen empfangen werden, trimmen verschiedene Speicher Benutzer ihre Arbeitsspeichernutzung.

Hinweis

Consumer können Arbeitsspeicherclerks sein, die Cachespeicher, Benutzerspeicher oder Objektspeicher sind.

Wenn für bestimmte Speicher Benutzer eine große Menge an Arbeitsspeicher verwendet wird, kann die Vorbereitung des Trimmens, den die Consumer durchführen, sehr viel Zeit in Anspruch nehmen.

Die Taskplaner-Überwachung wird alle 5 Sekunden ausgeführt. Die Zeit Plan Überwachung überprüft, ob der Ressourcen Monitor in den letzten 60 Sekunden von einem Consumer in einen anderen verschoben wurde. Wenn der Planer-Monitor feststellt, dass der Ressourcenmonitor nicht mehr als 60 Sekunden hinter einem Consumer vorbei verschoben wurde, interpretiert die Zeit Plan Überwachung dieses Szenario, da der Ressourcenmonitor in einen nicht-yielding-Zustand wechselt. Diese Interpretation bewirkt, dass der Zeit Plan Monitor die Fehlermeldung protokolliert, die im Abschnitt "Problembeschreibung" erwähnt wird.

Hinweis

Beginnend mit SQL Server 2019 wird das 60-Sekunden-Intervall auf 120 Sekunden erhöht. Diese Anhebung verringert die Häufigkeit dieser Diagnose Benachrichtigungen. Außerdem wird die Generierung von Speicherabbilddateien reduziert.

Diese Nachrichten werden auch ausgelöst, wenn die Rate, mit der der Ressourcen Monitor den Arbeitsspeicher frei gibt, alle 5 Sekunden weniger als 2 MB beträgt.

Diese Nachrichten sind nur ein Hinweis darauf, dass der Ressourcen Monitor beschäftigt ist, große Consumer zu bereinigen. Diese Nachrichten deuten nicht unbedingt auf ein Problem mit dem Ressourcen Monitor selbst hin.

Lösung

Beginnend mit den folgenden Service Packs erstreckt sich die nicht nachgebende Ressource Monitor-Nachricht, um den Arbeitsspeicherclerk leicht zu isolieren, der zu der nicht-yielding-Bedingung führt:

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

Die neue Nachricht wird dem folgenden Beispiel ähneln:

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 Nachricht verwendet werden:

  • Freigegebener Speicher: Dieses Feld gibt an, wie viel Arbeitsspeicher vom Ressourcen Monitor für das angegebene Intervall freigegeben wird. Sie wird in Kilobyte gemessen. Wenn die Rate, mit der der Arbeitsspeicher freigegeben wird, nicht alle 5 Sekunden 2 MB überschreitet, erkennt der Planer-Monitor diese Bedingung als nicht nachgebende Bedingung.

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

  • Letzter Schreiber: Dieses Feld ist der Typ und der Name des Arbeitsspeicherclerks, der den Arbeitsspeicher gekürzt hat, als die nicht-yielding-Bedingung aufgetreten ist.

  • Verwendete ungefähre CPU: Dieses Feld ist der Kernel und die Benutzer Zeit, die vom Ressourcen Monitor verwendet wird, wie in Millisekunden gemessen. Sie können dieses Feld zusammen mit anderen Feldern verwenden, um zu überprüfen, ob der Ressourcen Monitor im angegebenen Intervall Fortschritte macht.

  • Intervall: Dieses Feld ist die Zeit, die verstrichen ist, seit der letzte Schreiber in Millisekunden als gemessen gemeldet wurde.

Sie können diese Nachricht verwenden, um die Quelle der Benachrichtigung mit wenig Arbeitsspeicher zu identifizieren. Sie können auch die RING_BUFFER_RESOURCE_MONITOR-Einträge ab dem Zeitpunkt der Nachricht verwenden.

Ressourcen

Weitere Informationen zum Interpretieren des RING_BUFFER_RESOURCE Monitors finden Sie im folgenden techcommunity-Blogbeitrag:

Der Ressourcen Monitor-Task kann arbeitsspeicherbezogene Leistungsprobleme in SQL Server beheben. SQL Server überwacht und antwortet auf Speicher Benachrichtigungen. Weitere Informationen zu diesen Elementen finden Sie in den folgenden MSDN-Blog Artikeln: