El monitor observa el uso de memoria por parte de procesos distintos de Analysis Services en el servidor para garantizar que el valor de TotalMemoryLimit de Analysis Services siempre esté disponible.
El consumo de memoria del servidor que hospeda la instancia de SSAS puede afectar al estado y el rendimiento del servidor al competir por recursos compartidos desde los que la instancia también debe hacer asignaciones. Esto puede provocar el agotamiento de la memoria física disponible del equipo, lo que puede obligar al sistema operativo a asignar memoria virtual al archivo de paginación del disco, órdenes de magnitud de velocidad inferior a la memoria física. Para cualquier aplicación de negocio crítica que dependa de una instancia de SSAS, se debe configurar el servidor de modo que el resto de procesos (por ejemplo, antivirusdesfragmentacióndesfragmentación, desfragmentación de disco, otras instancias de SSAS o el motor de base de datos relacional de SQL Server, etc.) no asignen demasiada memoria y provoquen esta circunstancia.
Entre los procesos más comunes que pueden competir significativamente con las instancias de SSAS para la memoria se incluyen otras instancias de SSAS, el motor de base de datos relacional de SQL Server u otros servidores de la base de datos. Esto se debe a que estos tienden a ser los consumidores más intensivos de la memoria que se hospeda en servidores en los que SSAS también se hospeda. A veces, también es posible que el software que no es de la base de datos consuma memoria de forma intensiva. Por definición, las consideraciones de memoria pueden afectar la configuración de un servidor frecuentemente.
El Administrador de tareas se puede usar para examinar el uso de la memoria de varios procesos del servidor. En la pestaña Procesos de Windows Server 2008 R2 y en la pestaña Detalles de Windows Server 2012, existe la posibilidad de ordenar por la columna Memoria para comprobar y buscar fácilmente los procesos que consumen mayor memoria del sistema. Si las instancias de SSAS (msmdsrv.exe) o el motor de base de datos relacional de SQL Server (sqlservr.exe) consumen memoria de forma excesiva, puede identificar su uso rápidamente mediante este simple proceso. Además, también es posible ver si otros procesos del sistema pueden estar asociados a esta condición. Posteriormente, se pueden adoptar medidas correctivas (por ejemplo, ajustar el uso de la memoria de las instancias mediante el administrador SQL, agregar hardware o reducir/dividir la carga de trabajo en el equipo) según corresponda.
Para resolver problemas del uso total del servidor, los administradores deben comprender y considerar varios factores, incluidos, entre otros, requisitos de la carga de trabajo, programaciones de trabajos y usuarios, otros procesos programados en el equipo de servidor y recursos disponibles. Para corregir las asignaciones totales de memoria del equipo de servidor, realice una de las siguientes acciones:
Aumente la memoria física disponible en el equipo del servidor.
Disminuya el consumo de las instancias SSAS o las instancias de la base de datos relacional modificando el diseño después de consultar la Guía sobre rendimiento multidimensional de SSAS, o ponerse en contacto con el soporte técnico de Microsoft.
Disminuya el consumo de otros procesos a través de medios específicos para cada uno o finalizando aquellos que no son necesarios en el servidor.
Programe tareas o informes en las instancias afectadas para evitar una carga de trabajo simultánea en la que la memoria de servidor se asigne excesivamente.
Ajuste los umbrales configurados para la alerta para evitar la condición.
Deshabilite el monitor completamente si el uso de memoria no constituye un problema en el servidor.
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 |
Umbral crítico (%) | El estado cambia a Crítico si el valor de espacio libre sin reservar (%) es inferior al umbral. | 5 |
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. | 900 |
Hora de sincronización | Hora de sincronización especificada en un formato de 24 horas. Se puede omitir. | 4 |
Umbral de advertencia (%) | El estado cambia a Advertencia si el valor de espacio libre sin reservar (%) es inferior al umbral pero superior al Umbral crítico (%). |
|
Target | Microsoft.SQLServer.2008.AnalysisServices.Instance | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2008.AnalysisServices.MonitorType.Instance.MemoryUsageByOtherProcessPercent | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.MemoryUsageByOtherProcess" Accessibility="Public" Enabled="true" Target="SQLAS!Microsoft.SQLServer.2008.AnalysisServices.Instance" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2008.AnalysisServices.MonitorType.Instance.MemoryUsageByOtherProcessPercent" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.MemoryUsageByOtherProcess.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="Below" HealthState="Error"/>
<OperationalState ID="Warning" MonitorTypeStateID="Between" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="Above" HealthState="Success"/>
</OperationalStates>
<Configuration>
<WarningThreshold>10</WarningThreshold>
<CriticalThreshold>5</CriticalThreshold>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>