Uso de memoria en el servidor

Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.MemoryUsageByOtherProcess (UnitMonitor)

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.

Knowledge Base article:

Resumen

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.

Causas

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:

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.

Soluciones

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:

Externo

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

Parámetros invalidables

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

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 valor de espacio disponible sin reservar (%) es inferior al umbral pero superior al Umbral crítico (%).

10

Element properties:

TargetMicrosoft.SQLServer.2008.AnalysisServices.Instance
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2008.AnalysisServices.MonitorType.Instance.MemoryUsageByOtherProcessPercent
RemotableTrue
AccessibilityPublic
Alert Message
SSAS 2008: otros procesos han asignado demasiada memoria
Puede que la cantidad de memoria que establece el valor de límite de memoria total no esté disponible para SSAS porque otros procesos han asignado demasiada memoria ({4} GB).
Memoria total del servidor: {2} GB
Uso total de memoria: {5} GB
Memoria que usan procesos independientes de SSAS: {4} GB
Memoria que usa 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.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>