Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se proporciona más información sobre el monitor de recursos que no 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 Resource Monitor registra el mensaje siguiente 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 constantes. El monitor notifica a los suscriptores de eventos cuando 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 de 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 distribuidores de memoria que son almacenes de caché, almacenes de usuarios o almacenes de objetos.
Si determinados 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 scheduler Monitor detecta que el Monitor de recursos no se ha movido más allá de un consumidor durante 60 segundos, schedule Monitor interpreta este escenario como el Monitor de recursos que entra en un estado que no produce. Esta interpretación hace que el Monitor de programación registre el mensaje de error mencionado en la sección Síntomas.
Nota:
A partir de SQL Server 2019, el intervalo de 60 segundos se incrementa 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 resource Monitor 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 Packs, el mensaje del Monitor de recursos que no produce se extiende para aislar fácilmente el distribuidor 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:
Liberado de memoria: este campo es la cantidad de memoria que libera Resource Monitor 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, scheduler Monitor detecta esta condición como una condición de no rendimiento.
Ú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 Usedcampo . Esta combinación de campos puede identificar si el subproceso de Resource Monitor se está ejecutando o esperando una parte significativa del intervalo.Último distribuidor: este campo es el tipo y el nombre del distribuidor de memoria que estaba recortando 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, como se mide 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 distribuidor como medido en milisegundos.
Puede usar este mensaje para identificar el origen de la notificación de memoria baja. También puede usar las entradas 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 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: