Resource Monitor voert een niet-renderende voorwaarde in op een server waarop SQL Server

In dit artikel vindt u meer informatie over niet-renderende resourcemonitor.

Originele productversie: SQL Server
Origineel KB-nummer: 2216485

Symptomen

Op een server waarop Microsoft SQL Server 2008 of een latere versie wordt uitgevoerd, registreert de Resource Monitor-taak elke 5 seconden het volgende bericht:

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.

Oorzaak

De Resource Monitor-taak wordt periodiek geactiveerd om te luisteren naar geheugen gebeurtenissen die zijn geclassificeerd als laag, hoog of constant. De monitor meldt gebeurtenisabonnees wanneer deze gebeurtenissen plaatsvinden.

Deze geheugen gebeurtenissen kunnen buiten SQL Server. Externe gebeurtenissen omvatten meldingen van het besturingssysteem en zijn systeembreed. Andere gebeurtenissen zijn intern voor SQL Server. Interne gebeurtenissen omvatten meldingen van de buffergroep en zijn procesbreed. Wanneer dergelijke meldingen worden ontvangen, verminderen verschillende geheugengebruikers hun geheugengebruik.

Opmerking

Consumenten kunnen geheugenmedewerkers zijn die cachearchieven, gebruikersarchieven of objectarchieven zijn.

Als bepaalde geheugengebruikers een grote hoeveelheid geheugen gebruiken, kan het bijsnijden dat de consumenten uitvoeren lang duren voordat ze zijn voorbereid.

De taak Scheduler Monitor wordt elke 5 seconden uitgevoerd. De planningsmonitor controleert of de resourcemonitor in de afgelopen 60 seconden van de ene naar de andere consument is verplaatst. Wanneer de scheduler-monitor detecteert dat de resourcemonitor gedurende 60 seconden niet voorbij een consument is verplaatst, interpreteert de planningsmonitor dit scenario als de resourcemonitor die een status zonder resultaat krijgt. Deze interpretatie zorgt ervoor dat in de planningsmonitor het foutbericht wordt geregistreerd dat wordt vermeld in de sectie Symptomen.

Opmerking

Vanaf SQL Server 2019 wordt het interval van 60 seconden verhoogd tot 120 seconden. Deze toename vermindert de frequentie van deze diagnostische meldingen. En het vermindert het genereren van geheugendumpbestanden.

Deze berichten worden ook weergegeven als de snelheid waarmee de Resource Monitor geheugen elke 5 seconden vrijgeeft, kleiner is dan 2 MB.

Deze berichten zijn slechts een indicatie dat de resourcemonitor bezig is met het opschonen van grote consumenten. Deze berichten duiden niet noodzakelijkerwijs op een probleem met de resourcemonitor zelf.

Oplossing

Te beginnen met de volgende servicepacks wordt het bericht Resource Monitor uitgebreid om eenvoudig de geheugenmedewerker te isoleren die leidt tot de niet-renderende voorwaarde:

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

Het nieuwe bericht lijkt op het volgende voorbeeld:

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.

Hier volgen beschrijvingen van de verschillende velden die in dit bericht worden gebruikt:

  • Vrij geheugen: In dit veld wordt aangegeven hoeveel geheugen er wordt vrijgemaakt door Resource Monitor voor het opgegeven interval. Dit wordt gemeten in kilobytes. Als de snelheid waarmee het geheugen wordt vrijgemaakt niet elke 5 seconden groter is dan 2 MB, detecteert de Scheduler Monitor deze voorwaarde als een niet-opleverende voorwaarde.

  • Laatste wachttijd: Dit veld is het laatste wachttype voor de thread Resource Monitor. U kunt dit veld gebruiken in combinatie met het Approx CPU Used veld. Deze veldcombinatie kan bepalen of de Resource Monitor-thread wordt uitgevoerd of wacht op een aanzienlijk deel van het interval.

  • Laatste medewerker: Dit veld is het type en de naam van de geheugenmedewerker die het geheugen heeft ingekort toen de niet-opleverende voorwaarde optrad.

  • Cpu bij benadering gebruikt: Dit veld is de kernel- en gebruikerstijd die wordt gebruikt door Resource Monitor, gemeten in milliseconden. U kunt dit veld samen met andere velden gebruiken om te controleren of Resource Monitor vooruitgang boekt tijdens het opgegeven interval.

  • Interval: Dit veld is de tijd die is verstreken sinds de laatste medewerker op de hoogte is gesteld, gemeten in milliseconden.

U kunt dit bericht gebruiken om de bron van de melding over onvoldoende geheugen te identificeren. U kunt ook de RING_BUFFER_RESOURCE_MONITOR vermeldingen vanaf het tijdstip van het bericht gebruiken.

Middelen

Zie de volgende techcommunity-blogpost voor meer informatie over het interpreteren van de RING_BUFFER_RESOURCE MONITOR:

Met de resourcecontroletaak kunnen prestatieproblemen met betrekking tot het geheugen in SQL Server worden opgelost. SQL Server luistert naar en reageert op geheugenmeldingen. Zie de volgende MSDN-blogartikelen voor meer informatie over deze items: