Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel enthält weitere Informationen zu ressourcenfremden Monitoren.
Ursprüngliche Produktversion: SQL Server
Ursprüngliche KB-Nummer: 2216485
Problembeschreibung
Auf einem Server, auf dem Microsoft SQL Server 2008 oder eine höhere Version ausgeführt wird, protokolliert der Vorgang "Ressourcenüberwachung" 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 Vorgang "Ressourcenüberwachung" wird regelmäßig aktiviert, um speicherbezogene Ereignisse zu überwachen, die als niedrig, hoch oder stabil klassifiziert wurden. Der Monitor benachrichtigt Ereignisabonnenten, wenn diese Ereignisse auftreten.
Diese Speicherereignisse können außerhalb von SQL Server 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.
Notiz
Verbraucher können Speicherbearbeiter sein, die Cachespeicher, Benutzerspeicher oder Objektspeicher sind.
Wenn bestimmte Speicherverbraucher eine große Menge Arbeitsspeicher verwenden, kann das Kürzen, das der Verbraucher ausführt, eine lange Zeit in Anspruch nehmen, um sich vorzubereiten.
Der Task "Scheduler Monitor" wird alle 5 Sekunden ausgeführt. Der Zeitplanmonitor überprüft, ob der Ressourcenmonitor während der letzten 60 Sekunden von einem Verbraucher zu einem anderen gewechselt wurde. Wenn der Scheduler Monitor erkennt, dass der Ressourcenmonitor nicht länger als 60 Sekunden über einen Consumer verschoben wurde, interpretiert der Zeitplanmonitor dieses Szenario als Ressourcenmonitor, der einen nicht ertragenden Zustand eingibt. Diese Interpretation bewirkt, dass der Zeitplanmonitor die Fehlermeldung protokolliert, die im Abschnitt "Symptome" erwähnt wird.
Notiz
Ab SQL Server 2019 wird das 60-Sekunden-Intervall auf 120 Sekunden erhöht. Dadurch wird die Häufigkeit dieser Diagnosebenachrichtigungen reduziert. Und es reduziert die Generierung von Speicherabbilddateien.
Diese Meldungen werden auch ausgelöst, wenn die Rate, mit der der Ressourcenmonitor Arbeitsspeicher freigibt, alle 5 Sekunden weniger als 2 MB beträgt.
Diese Meldungen sind nur ein Hinweis darauf, dass der Ressourcenmonitor beschäftigt ist, große Verbraucher zu bereinigen. Diese Nachrichten deuten nicht unbedingt auf ein Problem mit dem Ressourcenmonitor selbst hin.
Lösung
Beginnend mit den folgenden Service Packs erweitert sich die Meldung "Ressourcenmonitor ohne Ertrag" so, dass der Speicherbearbeiter leicht isoliert wird, der zu einer nicht ertragfreien Bedingung führt:
- 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 Nachricht verwendet werden:
Arbeitsspeicher freigegeben: Dieses Feld gibt an, wie viel Arbeitsspeicher vom Ressourcenmonitor für das angegebene Intervall freigegeben wird. Es wird in Kilobyte gemessen. Wenn die Geschwindigkeit, mit der der Arbeitsspeicher freigegeben wird, alle 5 Sekunden nicht mehr als 2 MB überschreitet, erkennt der Scheduler Monitor diese Bedingung als nicht ertragende Bedingung.
Last wait: This field is the last wait type for the Resource Monitor thread. Sie können dieses Feld in Kombination mit dem
Approx CPU Used
Feld verwenden. Diese Feldkombination kann ermitteln, ob der Ressourcenüberwachungsthread ausgeführt wird oder auf einen erheblichen Teil des Intervalls wartet.Last clerk: This field is the type and name of the memory clerk that was trimming its memory when the non-yielding condition occurred.
Ungefähre CPU-Verwendung: Dieses Feld ist der Kernel und die Benutzerzeit, die von Resource Monitor verwendet wird, wie in Millisekunden gemessen. Sie können dieses Feld zusammen mit anderen Feldern verwenden, um zu überprüfen, ob der Ressourcenmonitor während des angegebenen Intervalls Fortschritte erzielt.
Intervall: Dieses Feld ist die Zeit, die seit dem letzten Mitarbeiter als gemessen in Millisekunden gemeldet wurde.
Sie können diese Meldung verwenden, um die Quelle der Benachrichtigung mit geringem 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 Vorgang "Ressourcenüberwachung" kann speicherbezogene Leistungsprobleme in SQL Server beheben. SQL Server überwacht und reagiert auf Speicherbenachrichtigungen. Weitere Informationen zu diesen Elementen finden Sie in den folgenden MSDN-Blogartikeln: