Consumo de memoria de grupo de recursos

Microsoft.SQLServer.2014.Monitor.UserResourcePool.MemoryConsumption (UnitMonitor)

El monitor notifica un estado crítico y genera una alerta cuando la cantidad de memoria que usa el grupo de recursos es superior a la configuración de umbral, expresada como porcentaje de la memoria disponible para las tablas de datos con optimización para memoria para el grupo de recursos determinado.

Knowledge Base article:

Resumen

El monitor notifica un estado crítico y genera una alerta cuando la cantidad de memoria que usa el grupo de recursos es superior a la configuración de umbral, expresada como porcentaje de la memoria disponible para las tablas de datos con optimización para memoria para el grupo de recursos determinado.

El grupo de recursos indicado al asignar a una base de datos con optimización para memoria realiza un seguimiento de la memoria asignada a todas las tablas con optimización para memoria, incluidas las tablas internas que se usan para diversas estructuras dentro del motor de datos con optimización para memoria.

Causas

Los datos con optimización para memoria de SQL Server usan más memoria y de maneras diferentes que SQL Server. Es posible que la cantidad de memoria que ha instalado y asignado para los datos con optimización para memoria se vuelva inadecuada para sus crecientes necesidades. De ser así, podría quedarse sin memoria.

Consulte este artículo para obtener más detalles: Enlazar una base de datos con tablas con optimización para memoria a un grupo de recursos.

Soluciones

Para resolver la condición de baja memoria o sin memoria, tiene que reducir el uso para liberar memoria existente o hacer que haya más memoria disponible para sus tablas de datos con optimización para memoria. Entre las posibles medidas correctivas se incluyen:

Externo

Cómo administrar su memoria para los datos con optimización para memoria

Parámetros invalidables

Nombre

Descripción

Valor predeterminado

Prioridad de alerta

Define la prioridad de la alerta.

Normal

Gravedad de alerta

Define la gravedad de la alerta.

Error

Habilitado

Habilita o deshabilita el flujo de trabajo.

Genera alertas

Define si el flujo de trabajo genera una alerta.

Intervalo (segundos)

Intervalo de tiempo periódico en segundos en que se ejecuta el flujo de trabajo.

300

Número de ejemplos

Indica cuántas veces debe superar un umbral un valor medido para que cambie el estado.

6

Retraso de script (milisegundos)

Este parámetro define el retraso entre las consultas T-SQL consecutivas que ejecuta el flujo de trabajo. Puede ayudar a reducir la superficie que genera el flujo de trabajo en caso de gran número de objetos de destino. Consulte con el soporte técnico de Microsoft antes de cambiar este parámetro.

0

Hora de sincronización

Hora de sincronización especificada en un formato de 24 horas. Se puede omitir.

00:06

Umbral

El valor recopilado se comparará con este parámetro.

90

Tiempo de espera (segundos)

Especifica el tiempo durante el que se puede ejecutar el flujo de trabajo antes de que se cierre y se marque como error.

180

Element properties:

TargetMicrosoft.SQLServer.2014.UserResourcePool
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2014.MonitorType.UserResourcePool.MemoryConsumption
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL 2014: Datos con optimización para memoria: el grupo de recursos consume demasiada memoria.
El grupo de recursos "{0}" consume demasiada memoria.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2014.Monitor.UserResourcePool.MemoryConsumption" Target="SQL2014Core!Microsoft.SQLServer.2014.UserResourcePool" ParentMonitorID="SystemHealth!System.Health.PerformanceState" TypeID="Microsoft.SQLServer.2014.MonitorType.UserResourcePool.MemoryConsumption" Accessibility="Public" Enabled="true" Remotable="true" Priority="Normal" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2014.Monitor.UserResourcePool.MemoryConsumption.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.ResourcePool"]/Name$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="ErrorState" MonitorTypeStateID="ErrorState" HealthState="Error"/>
<OperationalState ID="SuccessState" MonitorTypeStateID="SuccessState" HealthState="Success"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<ServerName>$Target/Host/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ServerName>
<SqlInstanceName>$Target/Host/Host/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.ServerRole"]/InstanceName$</SqlInstanceName>
<Value>$Data/Property[@Name='PoolUsedMemoryPercent']$</Value>
<PoolID>$Target/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.ResourcePool"]/PoolID$</PoolID>
<Threshold>90</Threshold>
<TimeoutSeconds>180</TimeoutSeconds>
<ScriptDelayMsec>0</ScriptDelayMsec>
<NumSamples>6</NumSamples>
</Configuration>
</UnitMonitor>