Conflit de configuration de mémoire avec SQL Server

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

La surveillance vous alerte si un processus du moteur de base de données relationnelle est en cours d'exécution sur le serveur, et si le paramètre de configuration Limite totale de la mémoire pour l'instance SSAS est plus élevé que le seuil spécifié. Cela permet de garantir que le processus serveur SQL Server dispose de suffisamment de mémoire.

Knowledge Base article:

Résumé

Le paramètre de configuration Limite totale de la mémoire de SQL Server Analysis Services doit être réglé de manière adéquate, pour gérer les allocations de mémoire d'autres processus sur l'ordinateur.

Causes

Le moteur de base de données relationnelle SQL Server est un excellent exemple d'un processus commun qui consomme des ressources mémoire sur un ordinateur qui exécute également SSAS. Dans ces circonstances, cela peut entraîner une concurrence d'accès à la mémoire physique par deux consommateurs importants de la même ressource fixe. Il est important que les deux services de base de données soient configurés pour partager suffisamment de mémoire physique et effectuer les fonctions nécessaires. Si la configuration du paramètre Limite totale de la mémoire SSAS est à un niveau trop élevé, SSAS risque de consommer trop de mémoire, ce qui peut entraîner une insuffisance de la mémoire physique, du fait de la concurrence avec le moteur de base de données relationnelle (ou avec d'autres processus à forte consommation de mémoire). Le paramètre Limite totale de la mémoire doit être configuré à un niveau suffisamment bas pour permettre la consommation de mémoire configurée de SQL Server, ainsi qu'une marge de consommation de mémoire pour le système d'exploitation et les autres processus habituels, essentiels pour un ordinateur.

Solutions

En cas de conflits de configuration de la mémoire, les ressources et les demandes des utilisateurs et des processus doivent être prises en compte par l'administrateur. La configuration de tous les processus pertinents doit ensuite être ajustée de manière adéquate. Le scénario le plus usuel pour ce type de problème sur un serveur de base de données Microsoft provient d'instances SSAS et du moteur de base de données relationnelle SQL Server. Heureusement, les deux services ont des paramètres de configuration que vous pouvez ajuster selon vos besoins. Il n'existe pas de valeur universelle concernant le paramètre Limite totale de la mémoire pour SSAS ou le paramètre de limite de mémoire maximale pour le moteur de base de données relationnelle SQL. Le seuil de cette alerte peut donc être ajusté par l'administrateur pour tenir compte de chaque environnement spécifique. Dans ce genre de situation, le problème peut être résolu via l'une des approches possibles 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

Configurer les 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

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

604800

Heure de synchronisation

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

 

Seuil d'avertissement (en %)

L'état d'intégrité change si un processus du moteur de base de données relationnelle SQL Server est en cours d'exécution sur le serveur, et si le paramètre de configuration Limite totale de la mémoire de l'instance SSAS dépasse le seuil.

40

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

Element properties:

TargetMicrosoft.SQLServer.2014.AnalysisServices.Instance
Parent MonitorSystem.Health.ConfigurationState
CategoryConfigurationHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2014.AnalysisServices.MonitorType.Instance.ConfigurationConflictWithSQLServer
RemotableTrue
AccessibilityPublic
Alert Message
SSAS 2014 : Conflit de configuration de mémoire avec SQL Server
Le paramètre de configuration Limite totale de la mémoire de l'instance SQL Server Analysis Services ({0} Go) laisse {1} Go sur {2} Go pour le système d'exploitation et SQL Server, ce qui est inférieur au seuil d'alerte configuré.
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.ConfigurationConflictWithSQLServer" Accessibility="Public" Enabled="true" Target="SQLAS!Microsoft.SQLServer.2014.AnalysisServices.Instance" ParentMonitorID="SystemHealth!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2014.AnalysisServices.MonitorType.Instance.ConfigurationConflictWithSQLServer" ConfirmDelivery="false">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2014.AnalysisServices.UnitMonitor.Instance.ConfigurationConflictWithSQLServer.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</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="Warning" MonitorTypeStateID="ConfigurationConflict" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="NoConfigurationConflict" HealthState="Success"/>
</OperationalStates>
<Configuration>
<Threshold>40</Threshold>
<IntervalSeconds>604800</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>