Utilisation de mémoire sur le serveur

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

La surveillance observe l'utilisation de la mémoire par les processus non Analysis Services sur le serveur, afin de vérifier que la Limite totale de la mémoire est toujours disponible pour Analysis Services.

Knowledge Base article:

Résumé

L'utilisation de la mémoire sur le serveur hébergeant l'instance SSAS peut affecter l'intégrité et les performances du serveur en raison de la concurrence d'accès aux ressources partagées à partir desquelles l'instance doit effectuer les allocations. Cela peut entraîner une insuffisance de la mémoire physique disponible sur l'ordinateur, ce qui peut forcer ensuite le système d'exploitation à mapper de la mémoire virtuelle au fichier d'échange sur le disque, avec un ordre de magnitude plus lent que pour la mémoire physique. Pour toute application critique dépendant d'une instance SSAS, le serveur doit être configuré de telle sorte que les autres processus (par exemple l'antivirus, la défragmentation de disque, les autres instances de SSAS ou le moteur de base de données relationnelle SQL Server, etc.) n'allouent pas de mémoire de manière excessive.

Causes

Les processus qui entrent généralement en concurrence de manière significative avec les instances SSAS pour la mémoire incluent avant tout d'autres instances de SSAS, le moteur de base de données relationnelle SQL Server ou d'autres serveurs de base de données, car ils sont habituellement les consommateurs les plus gourmands de la mémoire hébergée sur les serveurs où SSAS est également hébergé. Parfois, les logiciels qui ne sont pas liés à des bases de données peuvent également consommer beaucoup de mémoire. Ainsi, les considérations relatives à la mémoire peuvent fréquemment affecter la configuration d'un serveur.

De plus, la valeur de la mémoire non réservée libre (paramètre FreeUnreservedPercent) peut devenir négative. Ce paramètre est calculé comme suit : 100 % de la mémoire totale moins l'utilisation de la mémoire haute par l'instance (SSAS), et moins l'utilisation de la mémoire par les autres processus. Raisons possibles :

Le Gestionnaire des tâches permet d'examiner l'utilisation de la mémoire par les divers processus du serveur. Sous l'onglet Processus de Windows Server 2008 R2, et sous l'onglet Détails de Windows Server 2008, vous pouvez trier la colonne Mémoire pour identifier les processus qui consomment le plus sur le système. Si une ou plusieurs instances de SSAS (msmdsrv.exe) ou du moteur de base de données relationnelle SQL Server (sqlservr.exe) consomment trop de mémoire, cette méthode permet de les identifier rapidement. De plus, vous pouvez déterminer si d'autres processus du système sont également responsables de cette situation. Ainsi, les actions correctives (par exemple, le paramétrage de l'utilisation de la mémoire des instances par l'administrateur SQL, l'ajout de matériel ou la réduction/répartition de la charge de travail sur la machine) peuvent être conçues de manière appropriée.

Solutions

La résolution des problèmes liés à l'utilisation totale de la mémoire du serveur nécessite de la part des administrateurs qu'ils comprennent et prennent en compte de nombreux facteurs, notamment les exigences de charge de travail, les planifications des utilisateurs et des travaux, les planifications des autres processus sur le serveur et les ressources disponibles. Les solutions aux excès d'allocation de mémoire totale sur le serveur peuvent inclure les actions suivantes :

Externe

Documentation TechNet pour les propriétés de mémoire Analysis Services

Configurer les propriétés du serveur dans Analysis Services

Guide des performances multidimensionnelles SSAS

Paramètres remplaçables

Nom

Description

Valeur par défaut

Seuil critique (en %)

L'état d'intégrité passe à Critique quand la quantité non réservée libre (en %) passe sous le seuil.

5

Activé

Active ou désactive le workflow

Oui

Génère des alertes

Définit si le workflow génère une alerte

Oui

Intervalle en secondes

L'intervalle de temps récurrent en secondes pendant lequel le workflow est exécuté.

900

Nombre d'échantillons

L'état d'intégrité change si le nombre de dépassement de seuil est supérieur ou égal au nombre minimal de dépassements.

4

Heure de synchronisation

L'heure de synchronisation spécifiée dans un format de 24 heures. Peut être omise.

 

Délai d'attente (secondes)

Spécifie la durée pendant laquelle le workflow est autorisé à être exécuté avant d'être fermé et marqué comme un échec.

300

Seuil d'avertissement (en %)

L'état d'intégrité passe à Avertissement quand la quantité non réservée libre (en %) passe sous le seuil mais dépasse toujours le seuil critique (en %).

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 : D'autres processus ont alloué trop de mémoire
La quantité de mémoire prescrite par le paramètre Limite totale de la mémoire n'est peut-être pas disponible pour SSAS, car les autres processus ont alloué trop de mémoire ({4} Go).
Mémoire totale sur le serveur : {2} Go
Utilisation de mémoire totale : {5} Go
Mémoire utilisée par des processus non SSAS : {4} Go
Mémoire utilisée par SSAS : {3} Go
Limite basse de mémoire SSAS : {6} Go ({7} \%)
Limite haute de mémoire SSAS : {0} Go ({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>