El monitor observa el uso de memoria por parte de procesos distintos de Analysis Services en el servidor para garantizar que el valor del límite de memoria total 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, antivirus, 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.
Además, el valor de memoria disponible sin reservar (parámetro FreeUnreservedPercent) puede pasar a ser negativo. Este parámetro se calcula de la siguiente manera: el 100 % de la memoria total menos un uso de memoria elevado de la instancia (SSAS) y menos el uso de la memoria de otros procesos. Los motivos pueden ser:
Parámetro de límite de memoria total configurado incorrectamente en el archivo de configuración
La memoria total usada por otros procesos y el límite preestablecido para SSAS supera el 100%
El Administrador de tareas se puede usar para examinar el uso de memoria por parte de varios procesos del servidor. En la pestaña Procesos de Windows Server 2008 R2 y en la pestaña Detalles de Windows Server 2008, existe la posibilidad de ordenar por la columna Memoria para 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, los requisitos de la carga de trabajo, las programaciones de trabajos y usuarios, otros procesos programados en el equipo de servidor y los 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 revisar 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 de los procesos 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 durante períodos de tiempo en los 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 disponible sin reservar (%) es inferior al umbral. | 5 |
Habilitado | Habilita o deshabilita el flujo de trabajo | Sí |
Genera alertas | Define si el flujo de trabajo genera una alerta | Sí |
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 valor de espacio disponible sin reservar (%) es inferior al umbral pero superior al Umbral crítico (%). | 10 |
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/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>