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 de TotalMemoryLimit 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, 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.

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.

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.

Soluciones

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:

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 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.

 

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 (%).

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 TotalMemoryLimit 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/>
</Configuration>
</UnitMonitor>