Utilisation de mémoire sur le serveur

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

L'analyse observe l'utilisation de mémoire par les processus Analysis Services sur le serveur, afin de s'assurer que TotalMemoryLimit est toujours disponible pour Analysis Services.

Knowledge Base article:

Résumé

L'utilisation de mémoire sur le serveur hébergeant l'instance SSAS peut influencer l'intégrité et les performances du serveur en compétition pour les 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 en retour forcer le système d'exploitation à mapper de la mémoire virtuelle à un fichier d'échange sur le disque, avec des commandes d'une magnitude plus lente que la mémoire physique. Pour toute application primordiale dépendant d'une instance SSAS, le serveur doit être configuré de manière à ce que les autres processus (par exemple l'anti-virus, la défragmentation de disque, d'autres instances de SSAS ou le moteur de base de données relationnelle SQL Server, etc.) n'allouent pas de mémoire en excès, afin d'éviter ce problème.

Causes

Les processus qui entrent généralement en compétition significative avec les instances SSAS pour la mémoire comprennent 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, étant donné qu'ils sont habituellement les consommateurs les plus gourmands en mémoire hébergée sur les serveurs où SSAS est également hébergée. Parfois des logiciels qui ne sont pas des bases de données peuvent également consommer beaucoup de mémoire et de cours. De ce fait, les considérations liées à la mémoire peuvent fréquemment influencer la configuration d'un serveur.

Vous pouvez utiliser le Gestionnaire des tâches afin d'examiner l'utilisation de mémoire par différents processus sur le serveur. Dans l'onglet Processus de Window Server 2008 R2, et l'onglet Détails de Windows Server 2014, vous pouvez trier la colonne Mémoire afin de trouver facilement les processus consommant le plus de mémoire sur le système. Si les instances de SSAS (msmdsrv.exe) ou le moteur de base de données relationnelle SQL Server (sqlservr.exe) consomment trop de mémoire, cette technique est un moyen simple d'identifier leur utilisation rapidement. De plus, il est évidemment possible de voir si d'autres processus du système contribuent au problème. Par la suite, des actions correctives (comme l'ajustement de l'utilisation de mémoire des instances par l'administrateur SQL, l'ajour de matériel ou la réduction/division de la charge de travail sur la machine) peuvent être choisies plus adéquatement.

Solutions

Résoudre les problèmes liés à l'utilisation totale de serveur peut demander des administrateurs de comprendre et de prendre en compte de nombreux facteurs comprenant, sans s'y limiter, les exigences de charge de travail, les programmes utilisateurs et de travaux, les autres processus planifiés sur l'ordinateur serveur et les ressources disponibles. Les actions afin de remédier aux allocations excessives de mémoire totale sur le serveur peuvent comprendre une des actions suivantes :

Externe

Considérations liées à la configuration et au dimensionnement de la mémoire dans SQL Server 2014

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

Configuration des propriétés du serveur dans Analysis Services

Documentation TechNet pour les compteurs de performances SSAS

Guide des performances multidimensionnelles SSAS

Paramètres remplaçables

Nom

Description

Valeur par défaut

Seuil critique (en %)

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

5

Activé

Active ou désactive le workflow

Vrai

Génère des alertes

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

Vrai

Intervalle en secondes

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

900

Heure de synchronisation

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

4

Seuil d'avertissement (en %)

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

 

Element properties:

TargetMicrosoft.SQLServer.2014.AnalysisServices.Instance
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2014.AnalysisServices.MonitorType.Instance.MemoryUsageByOtherProcessPercent
RemotableTrue
AccessibilityPublic
Alert Message
SSAS 2014 : D'autres processus ont alloué trop de mémoire
La quantité de mémoire prescrite par le paramètre TotalMemoryLimit peut ne pas être 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.2014.AnalysisServices.UnitMonitor.Instance.MemoryUsageByOtherProcess" Accessibility="Public" Enabled="true" Target="SQLAS!Microsoft.SQLServer.2014.AnalysisServices.Instance" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2014.AnalysisServices.MonitorType.Instance.MemoryUsageByOtherProcessPercent" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2014.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>