Configuración de TotalMemoryLimit

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

El monitor genera una alerta cuando el valor de TotalMemoryLimit 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 básicas necesarias (al menos 2 GB).

Knowledge Base article:

Resumen

El monitor genera alertas cuando el valor TotalMemoryLimit 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 básicas necesarias. 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 de TotalMemoryLimit después de revisar exhaustivamente la Guía sobre rendimiento multidimensional de SSAS.

Causas

El valor TotalMemoryLimit debe permitir, como mínimo, suficiente espacio para que el sistema operativo realice las funciones básicas necesarias 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 funcionales 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 TotalMemoryLimit, lo que representa un 80 % de la memoria física disponible en el servidor. Si hay otros grandes consumidores de memoria (por ej., 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 TotalMemoryLimit del motor de SSAS funciona un poco diferente. El valor TotalMemoryLimit 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 LowMemoryLimit es el límite al que el servidor empezará a intentar borrar la memoria del 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 TotalMemoryLimit, es posible que el rendimiento del servidor se vea afectado, dado que el servidor borrará memoria del caché de forma muy agresiva. El servidor también admite un valor HardMemoryLimit: 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 TotalMemoryLimit 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 2008

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

Configurar las propiedades del servidor en Analysis Services

Guía sobre rendimiento multidimensional de SSAS

Parámetros invalidables

Nombre

Descripción

Valor predeterminado

Habilitado

Habilita o deshabilita el flujo de trabajo

True

Genera alertas

Define si el flujo de trabajo genera una alerta

True

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 de TotalMemoryLimit 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 básicas necesarias (al menos 2 GB).

2

Element properties:

TargetMicrosoft.SQLServer.2008.AnalysisServices.Instance
Parent MonitorSystem.Health.ConfigurationState
CategoryConfigurationHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2008.AnalysisServices.MonitorType.Instance.TotalMemoryConfiguration
RemotableTrue
AccessibilityPublic
Alert Message
SSAS 2008: configuración de TotalMemoryLimit no válida
El valor de TotalMemoryLimit 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.2008.AnalysisServices.UnitMonitor.Instance.TotalMemoryConfiguration" Accessibility="Public" Enabled="true" Target="SQLAS!Microsoft.SQLServer.2008.AnalysisServices.Instance" ParentMonitorID="SystemHealth!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2008.AnalysisServices.MonitorType.Instance.TotalMemoryConfiguration" ConfirmDelivery="false">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.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/>
</Configuration>
</UnitMonitor>