El Monitor de recursos entra en una condición que no produce rendimiento en un servidor que ejecuta SQL Server

En este artículo se proporciona más información sobre el Monitor de recursos que no produce rendimiento.

Versión del producto original: SQL Server
Número de KB original: 2216485

Síntomas

En un servidor que ejecuta Microsoft SQL Server 2008 o una versión posterior, la tarea Monitor de recursos registra el siguiente mensaje cada 5 segundos:

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.

Causa

La tarea Monitor de recursos se reactiva periódicamente para escuchar eventos de memoria clasificados como bajos, altos o estables. El monitor notifica a los suscriptores de eventos cuándo se producen estos eventos.

Estos eventos de memoria pueden ser externos a SQL Server. Los eventos externos incluyen notificaciones del sistema operativo y son de todo el sistema. Otros eventos son internos para SQL Server. Los eventos internos incluyen notificaciones del grupo de búferes y son de todo el proceso. Cuando se reciben estas notificaciones, varios consumidores de memoria recortan su uso de memoria.

Nota:

Los consumidores pueden ser almacenes de memoria que son almacenes de caché, almacenes de usuarios o almacenes de objetos.

Si algunos consumidores de memoria usan una gran cantidad de memoria, el recorte que realizan los consumidores puede tardar mucho tiempo en prepararse.

La tarea Monitor del programador se ejecuta cada 5 segundos. El Monitor de programación comprueba si el Monitor de recursos se ha movido de un consumidor a otro durante los últimos 60 segundos. Cuando el Monitor del programador detecta que el Monitor de recursos no se ha movido más allá de un consumidor durante 60 segundos, el Monitor de programación interpreta este escenario como el Monitor de recursos que entra en un estado que no produce resultados. Esta interpretación hace que el Monitor de programación registre el mensaje de error que se menciona en la sección Síntomas.

Nota:

A partir de SQL Server 2019, el intervalo de 60 segundos se aumenta a 120 segundos. Este aumento reduce la frecuencia de estas notificaciones de diagnóstico. Y reduce la generación de archivos de volcado de memoria.

Estos mensajes también se generan si la velocidad a la que el Monitor de recursos libera memoria es inferior a 2 MB cada 5 segundos.

Estos mensajes son solo una indicación de que El Monitor de recursos está ocupado limpiando grandes consumidores. Estos mensajes no indican necesariamente un problema con el propio Monitor de recursos.

Solución

A partir de los siguientes Service Pack, el mensaje de Resource Monitor que no produce rendimiento se extiende para aislar fácilmente el empleado de memoria que conduce a la condición de no rendimiento:

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

El nuevo mensaje será similar al ejemplo siguiente:

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.

A continuación se muestran descripciones de los distintos campos que se usan en este mensaje:

  • Memoria liberada: Este campo es la cantidad de memoria que libera el Monitor de recursos para el intervalo especificado. Se mide en kilobytes. Si la velocidad a la que se libera la memoria no supera los 2 MB cada 5 segundos, el Monitor del programador detecta esta condición como una condición que no produce resultados.

  • Última espera: Este campo es el último tipo de espera para el subproceso de Resource Monitor. Puede usar este campo en combinación con el Approx CPU Used campo . Esta combinación de campos puede identificar si el subproceso de Resource Monitor se está ejecutando o esperando una parte significativa del intervalo.

  • Último empleado: Este campo es el tipo y el nombre del empleado de memoria que recortaba su memoria cuando se produjo la condición de no rendimiento.

  • CPU aproximada usada: Este campo es el kernel y el tiempo de usuario que usa Resource Monitor, medidos en milisegundos. Puede usar este campo junto con otros campos para comprobar que Resource Monitor está progresando durante el intervalo especificado.

  • Intervalo: Este campo es el tiempo transcurrido desde que se notificó al último empleado, medido en milisegundos.

Puede usar este mensaje para identificar el origen de la notificación de memoria baja. También puede usar las entradas de RING_BUFFER_RESOURCE_MONITOR desde el momento del mensaje.

Recursos

Para obtener más información sobre cómo interpretar la RING_BUFFER_RESOURCE MONITOR, consulte la siguiente entrada de blog de techcommunity:

La tarea Monitor de recursos puede solucionar problemas de rendimiento relacionados con la memoria en SQL Server. SQL Server escucha y responde a las notificaciones de memoria. Para obtener más información sobre estos elementos, consulte los siguientes artículos de blog de MSDN: