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.
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.
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 paramètre Limite totale de la mémoire est défini de manière incorrecte dans le fichier config
La mémoire totale utilisée par les autres processus et la limite prédéfinie pour SSAS dépasse 100 %
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.
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 :
Augmenter la mémoire physique disponible sur l'ordinateur serveur.
Réduisez la consommation des instances SSAS ou des instances de base de données relationnelle en modifiant la conception, après avoir consulté le Guide de performances multidimensionnelles ou contacté le Support Microsoft.
Réduisez la consommation des autres processus par des moyens spécifiques à chacun d'eux, ou en terminant ceux qui ne sont pas nécessaires sur le serveur.
Planifiez des travaux ou des rapports sur les instances affectées pour éviter une charge de travail simultanée à certaines périodes, quand la mémoire du serveur est allouée de manière excessive.
Ajuster les seuils d'alerte configurés afin d'éviter le problème.
Désactivez entièrement la surveillance, si l'utilisation de mémoire n'est pas un problème sur le serveur.
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
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 |
Target | Microsoft.SQLServer.2008.AnalysisServices.Instance | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2008.AnalysisServices.MonitorType.Instance.MemoryUsageByOtherProcessPercent | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<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>