El monitor de recursos escribe una condición que no es de producción en un servidor que ejecuta SQL Server

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

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 activa de forma periódica para escuchar los eventos de memoria clasificados como bajos, altos o sostenidos. 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 de todo el sistema. Otros eventos son internos a 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 la memoria recortan su uso de la memoria.

Nota

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

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

La tarea de supervisión 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 ha movido más allá de un cliente durante 60 segundos, el monitor de programación interpreta este escenario como si el monitor de recursos entra en un estado que no es el resultado. 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 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 producen si la velocidad a la que el monitor de recursos libera memoria es inferior a 2 MB cada 5 segundos.

Estos mensajes son sólo una indicación de que el monitor de recursos está ocupado liberando a los consumidores grandes. Estos mensajes no indican necesariamente un problema con el propio monitor de recursos.

Solución

A partir de los siguientes Service Packs, el mensaje de supervisión de recursos sin resultados se extiende para aislar fácilmente el encargado de la memoria que conduce a la condición que no rinde:

  • 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.

Las siguientes son 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 durante el intervalo especificado. Se mide en kilobytes. Si la velocidad a la que se libera la memoria no supera 2 MB cada 5 segundos, el monitor del programador detecta esta condición como una condición que no genera ningún resultado.

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

  • Último funcionario: Este campo es el tipo y el nombre del encargado de la memoria que recorta su memoria cuando se produjo la condición que no rinde.

  • Uso aproximado de CPU: Este campo es el tiempo del núcleo y del usuario que usa el monitor de recursos, tal y como se mide en milisegundos. Puede usar este campo junto con otros campos para comprobar que el monitor de recursos está realizando un progreso durante el intervalo especificado.

  • Intervalo: Este campo es el tiempo transcurrido desde que se notificó al último funcionario como se midió 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 la hora del mensaje.

Recursos

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

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