Uso de memoria

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

El monitor genera una advertencia cuando las asignaciones de memoria por parte de la instancia de SSAS superan el umbral de advertencia configurado, expresado como un porcentaje del valor del límite de memoria total para la instancia de SSAS. El monitor emite una alerta crítica cuando dichas asignaciones superan el umbral crítico configurado.

Knowledge Base article:

Resumen

El monitor genera una advertencia cuando las asignaciones de memoria por parte de la instancia de SSAS superan el umbral de advertencia configurado, expresado como un porcentaje del valor del límite de memoria total para la instancia de SSAS. El monitor emite una alerta crítica cuando dichas asignaciones superan el umbral crítico configurado.

Causas

En algunos casos, SSAS puede acercarse o superar el valor de configuración del límite total de memoria. En algunos casos, una única operación requiere un consumo de memoria superior al límite y, a pesar de los esfuerzos del servidor por liberar memoria de otras tareas menos inmediatas, puede que, en algunas ocasiones, las asignaciones superen necesariamente los límites configurados. De lo contrario, se producirían errores en las operaciones.

Esto puede pasar al procesar grandes dimensiones o datos de hechos, especialmente si existen atributos con tipos de datos que consumen grandes cantidades de espacio (por ejemplo, cadenas largas, datos binarios, etc.) o si la dimensión contiene una gran cantidad de miembros. Además, las consultas que se ejecutan en el servidor pueden cubrir espacios muy grandes, sobre todo si se unen varias dimensiones entre sí o si se necesitan cálculos significativos para generar resultados para celdas que no haya agregado previamente un administrador previsor o que, simplemente, no se puedan agregar con antelación.

Soluciones

Cuando se superan los límites de memoria de un servidor, los administradores pueden usar diferentes métodos para solucionar el problema. Después de considerar la actividad subyacente que provoca el consumo de memoria, los requisitos de carga de trabajo del servidor, los recursos disponibles y otros factores, así como de revisar y estudiar detenidamente la Guía sobre rendimiento multidimensional de SSAS o consultar con el servicio de soporte técnico de Microsoft, según sea necesario, se puede usar cualquiera de estos métodos para resolver el problema:

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

Umbral crítico (%)

El estado cambia a Crítico si el uso de memoria de Analysis Services (%) supera el umbral.

95

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.

900

Número de ejemplos

El estado cambia si el número de infracciones de umbral es mayor o igual que el número mínimo de infracciones.

4

Hora de sincronización

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

 

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

Umbral de advertencia (%)

El estado cambia a Advertencia si el uso de memoria de Analysis Services (%) supera el umbral pero no el Umbral crítico (%).

80

Element properties:

TargetMicrosoft.SQLServer.2016.AnalysisServices.Instance
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2016.AnalysisServices.MonitorType.Instance.MemoryUsagePercent
RemotableTrue
AccessibilityPublic
Alert Message
SSAS 2016: uso de memoria superior
El uso de memoria actual para SSAS ({3} GB) supera el umbral configurado, expresado como porcentaje del valor de límite de memoria total para la instancia.
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.2016.AnalysisServices.UnitMonitor.Instance.MemoryUsage" Accessibility="Public" Enabled="true" Target="SQLAS!Microsoft.SQLServer.2016.AnalysisServices.Instance" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2016.AnalysisServices.MonitorType.Instance.MemoryUsagePercent" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2016.AnalysisServices.UnitMonitor.Instance.MemoryUsage.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</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="Error" MonitorTypeStateID="Critical" HealthState="Error"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="Success" HealthState="Success"/>
</OperationalStates>
<Configuration>
<CriticalThreshold>95</CriticalThreshold>
<WarningThreshold>80</WarningThreshold>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>