Conflicto de configuración de memoria con SQL Server

Microsoft.SQLServer.2014.AnalysisServices.UnitMonitor.Instance.ConfigurationConflictWithSQLServer (UnitMonitor)

El monitor genera una alerta si se está ejecutando un proceso de motor de base de datos relacional de SQL Server en el servidor y la configuración de TotalMemoryLimit para la instancia de SSAS es superior al umbral especificado, a fin de garantizar que el proceso de SQL Server tenga suficiente memoria.

Knowledge Base article:

Resumen

El valor de configuración de TotalMemoryLimit de SQL Server Analysis Services se debe ajustar correspondientemente para que admita asignaciones de memoria para otros procesos del equipo.

Causas

El motor de base de datos relacional de SQL Server en particular es un ejemplo principal de un proceso común que puede consumir recursos de memoria en un equipo que también ejecute SSAS y, en estas circunstancias, puede provocar una competición por la memoria física por parte de ambos consumidores masivos del mismo recurso fijo. Esto requiere que ambos servicios de base de datos se configuren para permitir suficiente memoria física al otro para llevar a cabo las funciones requeridas. Si el valor configurado de TotalMemoryLimit de SSAS es demasiado elevado, puede que SSAS consuma demasiada memoria y se agote la memoria física debido a la competición con el motor de base de datos relacional (o con otros procesos que también consuman mucha memoria). El valor de TotalMemoryLimit se debe configurar suficientemente bajo para permitir el consumo de memoria configurado de SQL Server más un margen para el consumo de memoria del sistema operativo y otros procesos típicos necesario para el equipo.

Soluciones

Cuando se producen conflictos de configuración de memoria, el administrador debe evaluar los recursos y las demandas de los usuarios y otros procesos y ajustar la configuración de todos los procesos relevantes como corresponda. El escenario más común para este tipo de problema en un servidor de bases de datos de Microsoft procede de las instancias de SSAS y del motor de base de datos relacional de SQL Server. Afortunadamente, ambos servicios cuentan con opciones de configuración de características que se pueden ajustar según sea necesario. No hay ninguna opción de configuración de TotalMemoryLimit para SSAS ni de límite de memoria máximo para el motor de base de datos relacional de SQL universalmente correcta, de modo que el administrador puede ajustar el umbral de esta alerta para adaptarlo a cada entorno específico. Una vez detectada, existen muchos enfoques potenciales que pueden paliar esta situación:

Externo

Consideraciones de tamaño y configuración de memoria en SQL Server 2014

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

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 (%)

El estado cambia si se está ejecutando un proceso de motor de base de datos relacional de SQL Server en el servidor y la configuración de TotalMemoryLimit para la instancia de SSAS es superior al umbral.

40

Element properties:

TargetMicrosoft.SQLServer.2014.AnalysisServices.Instance
Parent MonitorSystem.Health.ConfigurationState
CategoryConfigurationHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2014.AnalysisServices.MonitorType.Instance.ConfigurationConflictWithSQLServer
RemotableTrue
AccessibilityPublic
Alert Message
SSAS 2014: conflicto de configuración de memoria con SQL Server
El ajuste de configuración de TotalMemoryLimit ({0} GB) de instancia de SQL Server Analysis Services deja {1} GB de {2} GB para el sistema operativo y SQL Server, cantidad inferior al umbral configurado para la alerta.
Memoria total del servidor: {2} GB
Uso total de memoria: {5} GB
Memoria usada por procesos independientes de SSAS: {4} GB
Memoria usada por SSAS: {3} GB
Límite inferior de memoria SSAS: {6} GB ({7}\%)
Límite superior de memoria SSAS: {0} GB ({8}\%)
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2014.AnalysisServices.UnitMonitor.Instance.ConfigurationConflictWithSQLServer" Accessibility="Public" Enabled="true" Target="SQLAS!Microsoft.SQLServer.2014.AnalysisServices.Instance" ParentMonitorID="SystemHealth!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2014.AnalysisServices.MonitorType.Instance.ConfigurationConflictWithSQLServer" ConfirmDelivery="false">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2014.AnalysisServices.UnitMonitor.Instance.ConfigurationConflictWithSQLServer.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="ConfigurationConflict" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="NoConfigurationConflict" HealthState="Success"/>
</OperationalStates>
<Configuration>
<Threshold>40</Threshold>
<IntervalSeconds>604800</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>