Configuration TotalMemoryLimit

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

L'analyse vous alerte lorsque le paramètre TotalMemoryLimit configuré pour l'instance SSAS dépasse le seuil configuré, ce qui crée un risque relatif à l'allocation de mémoire physique nécessaire pour que le système d'exploitation exécute des fonctions nécessaires de base, soit au moins 2 Go.

Knowledge Base article:

Résumé

L’analyse envoie une alerte lorsque le paramètre TotalMemoryLimit configuré pour l’instance SSAS dépasse le seuil configuré, ce qui crée un risque relatif à l’allocation de la mémoire physique requise par le système d’exploitation pour exécuter les fonctions de base nécessaires. De plus, la configuration ne prend pas en compte la consommation potentielle par des processus autres que l’instance spécifique analysée, qui doit également être prise en compte par l’administrateur pour l’ajustement des paramètres de TotalMemoryLimit, après avoir examiné avec attention le Guide des performances multidimensionnelles SSAS.

Causes

Le paramètre TotalMemoryLimit doit offrir, au minimum, suffisamment de place pour que le système d'exploitation puisse exécuter les fonctions nécessaires basiques de gestion de mémoire, ainsi que d'interaction avec les pilotes et le matériel. Si le SE ne dispose pas de suffisamment de mémoire disponible pour ces fonctions essentielles, cela peut entraîner une instabilité ou une défaillance du système. De ce fait, le paramètre doit être configuré en dessous de 100 %, afin de garantir que ces fonctions disposent de suffisamment de mémoire physique. S'il est défini comme trop élevé, cette analyse vous alertera pour vous prévenir de ce problème.

La configuration par défaut pour SSAS est de 80 de TotalMemoryLimit, soit 80 % de mémoire physique disponible sur le serveur. Si d'autres grands consommateurs de mémoire (par exemple le moteur de base de données relationnelle SQL Server) sont présents, cela doit être pris en compte et les paramètres de limite de mémoire abaissés en conséquence. Si ce paramètre est trop élevé, le SE peut manquer de mémoire physique, ce qui entraîne une grande quantité de fichiers d'échange et des performances inefficaces sur le serveur.

Si un nombre spécifique d'octets est nécessaire, toute valeur supérieure à 100 est interprétée comme un nombre d'octets de mémoire physique.

Remarque : Contrairement au moteur de base de données relationnelle SQL Server, qui prend en charge une limite dure de mémoire maximale, TotalMemoryLimit du moteur SSAS fonctionne quelque peu différemment. TotalMemoryLimit correspond à la limite à partir de laquelle le serveur commencera à tenter de libérer de la mémoire agressivemment, aussi rapidement que possible. De même, LowMemoryLimit correspond à la limite à laquelle le serveur commencera à tenter de libérer de la mémoire du cache SSAS “de manière non agressive”, en tentant de réduire l'impact de toute session ou requête déjà en cours. Lorque TotalMemoryLimit est atteint, les performances du serveur peuvent être touchées, étant donné que le serveur libère de la mémoire du cache de manière très agressive. Le serveur prend également en charge un paramètre HardMemoryLimit – à partir duquel le serveur commencera à mettre fin à des sessions de manière arbitraire afin de tenter de libérer de la mémoire. Cela peut entrainer des défaillances pour certains utilisateurs, c'est pour cela que TotalMemoryLimit n'est pas mis en place en tant que limite dure, étant donné que certaines requêtes ou travaux peuvent par nature être très gourmands en mémoire et le moteur OLAP fera de son mieux pour les alimenter, dans les limites configurées.

Solutions

Ce problème peut être résolu par l'une des actions suivantes :

Externe

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

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

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

Guide des performances multidimensionnelles SSAS

Paramètres remplaçables

Nom

Description

Valeur par défaut

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

604800

Heure de synchronisation

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

 

Seuil d'avertissement (Go)

L'analyse vous alerte lorsque le paramètre TotalMemoryLimit configuré pour l'instance SSAS dépasse le seuil configuré, ce qui crée un risque relatif à l'allocation de mémoire physique nécessaire pour que le système d'exploitation exécute des fonctions nécessaires de base, soit au moins 2 Go.

2

Element properties:

TargetMicrosoft.SQLServer.2008.AnalysisServices.Instance
Parent MonitorSystem.Health.ConfigurationState
CategoryConfigurationHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2008.AnalysisServices.MonitorType.Instance.TotalMemoryConfiguration
RemotableTrue
AccessibilityPublic
Alert Message
SSAS 2008 : Configuration TotalMemoryLimit invalide
Le paramètre TotalMemoryLimit configuré pour l'instance SSAS ({0} Go) dépasse le seuil configuré requis pour les fonctions nécessaires du système d'exploitation.
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.TotalMemoryConfiguration" Accessibility="Public" Enabled="true" Target="SQLAS!Microsoft.SQLServer.2008.AnalysisServices.Instance" ParentMonitorID="SystemHealth!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2008.AnalysisServices.MonitorType.Instance.TotalMemoryConfiguration" ConfirmDelivery="false">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.TotalMemoryConfiguration.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="NotConfigured" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="Configured" HealthState="Success"/>
</OperationalStates>
<Configuration>
<Threshold>2</Threshold>
<IntervalSeconds>604800</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>