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.
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.
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.
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:
Ajuste la configuración del límite de memoria máximo de las instancias de SQL Server para reducir el consumo por parte de estos procesos.
Reduzca el valor de configuración de TotalMemoryLimit de las instancias de SSAS para reducir el consumo por parte de estos procesos.
Aumente la memoria disponible en el servidor.
Ajuste el umbral para la alerta.
Deshabilite la alerta en los casos en que el administrador determine que es innecesaria.
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
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 |
Target | Microsoft.SQLServer.2008.AnalysisServices.Instance | ||
Parent Monitor | System.Health.ConfigurationState | ||
Category | ConfigurationHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2008.AnalysisServices.MonitorType.Instance.ConfigurationConflictWithSQLServer | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.ConfigurationConflictWithSQLServer" 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.ConfigurationConflictWithSQLServer" ConfirmDelivery="false">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.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>