Configuración de límite de memoria total

Microsoft.SQLServer.2016.AnalysisServices.UnitMonitor.Instance.TotalMemoryConfiguration (UnitMonitor)

El monitor genera una alerta cuando el valor del límite de memoria total configurado para la instancia de SSAS supera el umbral configurado, lo que pone en riesgo la asignación de la memoria física necesaria para que el sistema operativo realice las funciones esenciales (al menos 2 GB).

Knowledge Base article:

Resumen

El monitor genera alertas cuando el valor del límite de memoria total configurado para la instancia de SSAS supera el umbral configurado, lo que pone en riesgo la asignación de la memoria física necesaria para que el sistema operativo realice las funciones esenciales. Además, la configuración no se tiene en cuenta para el consumo de memoria potencial por parte de procesos que no son de la instancia supervisada específica, lo que también debe considerar un administrador al ajustar los valores del límite de memoria total después de revisar exhaustivamente la Guía sobre rendimiento multidimensional de SSAS.

Causas

Como mínimo, el valor de límite de la memoria total debe permitir suficiente espacio para que el sistema operativo realice las funciones básicas de gestión de memoria, así como la interacción de la unidad y el hardware. Si el sistema operativo no tiene suficiente memoria disponible para realizar estas funciones esenciales, se puede producir inestabilidad o un error en el sistema. Por tanto, el valor se debe configurar ligeramente por debajo del 100 %, para garantizar que estas funciones tengan suficiente memoria física disponible. Si el valor definido es demasiado alto, este monitor generará la alerta para advertir de la condición.

La configuración predeterminada de SSAS es de 80 para el valor del límite de memoria total, lo que representa un 80 % de la memoria física disponible en el servidor. Si hay otros grandes consumidores de memoria (por ejemplo, el motor de base de datos relacional de SQL Server), se deberán tener en cuenta y la configuración del límite de memoria se deberá reducir según corresponda. Si el número es demasiado alto, es posible que el sistema operativo no disponga de suficiente memoria física y, como consecuencia, puede originarse una gran cantidad de paginación de disco, lo que conllevará un rendimiento ineficaz del servidor.

Si se necesita un número especifico de bytes, cualquier valor superior a 100 se interpreta como un número de bytes de la memoria física.

Nota: A diferencia del motor de base de datos relacional de SQL Server, que admite un límite máximo estricto de la memoria, el valor del límite de memoria total del motor de SSAS funciona un poco diferente. El valor del límite de memoria total es el límite al que el servidor empezará a intentar de forma agresiva borrar la memoria tan rápido como sea posible. De la misma manera, el valor del límite de memoria bajo es el límite al que el servidor empezará a intentar borrar la memoria de la caché de SSAS de forma diferida y, además, intentará reducir el impacto en cualquier sesión o consulta existente que ya se encuentre en curso. Si se alcanza el valor del límite de memoria total, es posible que el rendimiento del servidor se vea afectado, dado que el servidor borrará memoria de la caché de forma muy agresiva. El servidor también admite un valor de límite de memoria física: un punto en el que el servidor empezará a finalizar sesiones de forma arbitraria para intentar liberar memoria. Esto puede causar errores a algunos usuarios y, por este motivo, el valor del límite de memoria total no se aplica como un límite estricto, ya que es posible que algunas consultas o trabajos hagan un uso intensivo de la memoria por naturaleza. El motor de OLAP hará todo lo posible para servirles dentro de los límites que pueda admitir según su configuración.

Soluciones

Para resolver esta condición, realice una de las siguientes acciones:

Externo

Configuración de la memoria y consideraciones del tamaño en SQL Server 2016

Documentación de TechNet para las propiedades de memoria de Analysis Services

Configurar las propiedades del servidor en Analysis Services

Documentación de TechNet para los contadores de rendimiento de SSAS

Guía sobre rendimiento multidimensional de SSAS

Parámetros invalidables

Nombre

Descripción

Valor predeterminado

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.

604800

Hora de sincronización

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

 

Umbral de advertencia (GB)

El monitor genera una alerta cuando el valor del límite de memoria total configurado para el sistema operativo supera el umbral configurado, lo que pone en riesgo la asignación de la memoria física necesaria para que el sistema operativo realice las funciones esenciales (al menos 2 GB).

2

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.

300

Element properties:

TargetMicrosoft.SQLServer.2016.AnalysisServices.Instance
Parent MonitorSystem.Health.ConfigurationState
CategoryConfigurationHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2016.AnalysisServices.MonitorType.Instance.TotalMemoryConfiguration
RemotableTrue
AccessibilityPublic
Alert Message
SSAS 2016: configuración de límite total de memoria no válida
El valor del límite de memoria total configurado para la instancia de SSAS ({0} GB) supera el umbral configurado que se necesita para determinadas funciones de sistema operativo necesarias y puede provocar la inestabilidad del sistema o errores.
Memoria total del servidor: {2} GB
Uso total de memoria: {5} GB
Memoria que usan procesos independientes de SSAS: {4} GB
Memoria que usa SSAS: {3} GB
Límite inferior de memoria de SSAS: {6} GB ({7} \%)
Límite superior de memoria de SSAS: {0} GB ({8} \%)
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2016.AnalysisServices.UnitMonitor.Instance.TotalMemoryConfiguration" Accessibility="Public" Enabled="true" Target="SQLAS!Microsoft.SQLServer.2016.AnalysisServices.Instance" ParentMonitorID="SystemHealth!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2016.AnalysisServices.MonitorType.Instance.TotalMemoryConfiguration" ConfirmDelivery="false">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2016.AnalysisServices.UnitMonitor.Instance.TotalMemoryConfiguration.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='MemoryLimitHighGB']$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='MemoryLeavesForOsGB']$</AlertParameter2>
<AlertParameter3>$Data/Context/Property[@Name='TotalPhysicalMemoryGB']$</AlertParameter3>
<AlertParameter4>$Data/Context/Property[@Name='MemoryUsageGB']$</AlertParameter4>
<AlertParameter5>$Data/Context/Property[@Name='MemoryUsageByOtherProcessGB']$</AlertParameter5>
<AlertParameter6>$Data/Context/Property[@Name='UsedPhysicalMemoryGB']$</AlertParameter6>
<AlertParameter7>$Data/Context/Property[@Name='MemoryLimitLowGB']$</AlertParameter7>
<AlertParameter8>$Data/Context/Property[@Name='MemoryLimitLowPercent']$</AlertParameter8>
<AlertParameter9>$Data/Context/Property[@Name='MemoryLimitHighPercent']$</AlertParameter9>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Warning" MonitorTypeStateID="NotConfigured" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="Configured" HealthState="Success"/>
</OperationalStates>
<Configuration>
<Threshold>2</Threshold>
<IntervalSeconds>604800</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>