Monitor de recursos entra en una condición sin ofrecimiento en un servidor que está ejecutando SQL Server

Se aplica a: Microsoft SQL Server

Síntomas


En un servidor que está ejecutando 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 utilizando 'dbghelp.dll' versión '4.0.5'Date_And_Time Servidor ** volcar el subproceso - spid = 0, PSS = 0x0000000000000000, CE = 0 X 0000000000000000Date_And_Time Inicio de sesión de inicio de sesión correcto del usuario 'OPENTEXT\sqlcrmusr'. Conexión: confianza. [Cliente: dirección_IP]Date_And_Time spid78 Error: 4014, gravedad: 20, estado: 2.Date_And_Time spid78 un error grave al leer la secuencia de entrada de la red. Se terminará la sesión.Date_And_Time Servidor *** volcado de pila que se envían a la unidad: \MSSQL2005\LOG\SQLDump#.txtDate_And_Time Servidor * ***Date_And_Time Servidor *Date_And_Time Servidor * volcado de pila inicial:Date_And_Time Servidor * spid Date_And_Time 0Date_And_Time Servidor *Date_And_Time Servidor * Monitor de recursos sin ofrecimientoDate_And_Time Servidor *Date_And_Time Servidor * ***Date_And_Time Servidor *---Date_And_Time Servidor * volcado de pila de cortocircuitoDate_And_Time Firma de la pila para el volcado de servidor es 0x000000000000005CDate_And_Timeservidor, desconocido, trabajador del Monitor de recursos (0x9b0) 0x0000000003A2C1C0 parece estar sin ofrecimiento en Node_ #. Liberada de memoria: 0 KB. Aprox CPU utilizada: núcleo 0 msnull usuario 0 msnull intervalo: Interval_value.

Causa


A partir de SQL Server 2008, la tarea Monitor de recursos se despierta periódicamente para escuchar y notificar a los suscriptores de eventos de memoria estable, alta o baja. Estos eventos de memoria pueden ser externos a SQL Server (notificaciones de todo el sistema desde el sistema operativo) o interno para SQL Server (notificaciones de todo el proceso desde el grupo de búferes). Cuando se producen tales notificaciones, varios consumidores de memoria recortan su uso de memoria.Nota Consumidores pueden ser empleados de la memoria caché almacena, almacenes de usuario o almacenes de objeto.Si ciertos consumidores de memoria utilizan una gran cantidad de memoria, el recorte que realizan los consumidores puede tardar mucho tiempo en Finalizar.La tarea Monitor de programador que se ejecuta cada 5seconds comprueba si el Monitor de recursos se ha movido desde un cliente a otro en los últimos 60 segundos. Cuando el Monitor de programador detecta que el Monitor de recursos no se ha movido más allá de un consumidor durante 60 segundos, el Monitor de programa interpreta esto como el Monitor de recursos entrando en un estado sin ofrecimiento y registra el mensaje de error es el Monitor de programa mencionado en la sección "Síntomas".
Nota: a partir de SQL Server 2019, aumenta el intervalo de 60 segundos a 120 segundos para reducir la frecuencia de estas notificaciones diagnóstico y 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 la 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 limpiando grandes consumidores, y estos mensajes no indican necesariamente un problema con el Monitor de recursos propio.

Solución


Comenzando con Microsoft SQL Server 2008 Service Pack 2 y Service Pack 1 de Microsoft SQL Server 2008 R2, se extendió el mensaje del Monitor de recursos sin ofrecimiento para aislar fácilmente el empleado de memoria que conduce a la condición sin ofrecimiento.El nuevo mensaje será similar al siguiente:
Trabajo de Monitor (0x9b0) recursos 0x0000000003A2C1C0 parece estar sin ofrecimiento de nodo Node_ #. Liberada de memoria: 0 KB. Última espera: lastwaittype. Última del vendedor: tipo clerk_type, clerk_nameel nombre. Aprox CPU utilizada: núcleo 0 ms, usuario ms 0, intervalo: Interval_value.
Las siguientes son descripciones de los distintos campos que se utilizan en este mensaje:
  • Libera la memoria: es la cantidad de memoria se libera el Monitor de recursos para el intervalo especificado como en kilobytes. Si la velocidad a la que se libera la memoria no superar los 2 MB cada 5 segundos, el Monitor de programador detecta esta condición como una condición sin ofrecimiento.
  • Última espera: este es el último tipo de espera para el subproceso del Monitor de recursos. Puede utilizar este campo junto con el campo Aprox CPU utilizada para identificar si el subproceso del Monitor de recursos está ejecutando o en espera para una parte significativa del intervalo.
  • Último empleado: este es el tipo y el nombre del Secretario de memoria que se recorte la memoria cuando se produjo la condición sin ofrecimiento.
  • Aprox CPU utilizado: es el tiempo de núcleo y de usuario que utiliza el Monitor de recursos se mide en milisegundos. Esto se puede utilizar con otros campos para comprobar que el Monitor de recursos está realizando el progreso durante el intervalo especificado.
  • Intervalo: es el tiempo transcurrido desde que se notificó el último empleado medido en milisegundos.
Puede utilizar este mensaje además de las entradas RING_BUFFER_RESOURCE_MONITOR desde el momento del mensaje para identificar el origen de la notificación de falta de memoria.Para obtener más información acerca de cómo interpretar al MONITOR RING_BUFFER_RESOURCE. visite el blog MSDN siguiente:Para obtener más información acerca de cómo SQL Server escucha y responde a las notificaciones de memoria y acerca de la tarea Monitor de recursos y solucionar problemas de rendimiento relacionados con la memoria en SQL Server, consulte los siguientes artículos del blog MSDN:

Estado


Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a". Este problema se corrigió primero en SQL Server 2008 Service Pack 2 para SQL Server 2008.This problema se corrigió primero en SQL Server 2008 R2 Service Pack 1 para SQL Server 2008 R2.