La surveillance vous alerte quand le nombre de sessions bloquées pour une durée supérieure au paramètre WaitMinutes configuré dépasse le seuil configuré.
La surveillance vous alerte si le nombre de sessions bloquées pour une durée supérieure au paramètre WaitMinutes configuré dépasse le seuil configuré. Le blocage a lieu quand une session maintient un verrou sur une ressource spécifique et qu'une autre session tente d'obtenir un type de verrou en conflit sur la même ressource. Le blocage est une caractéristique inévitable de tout système de gestion de base de données comprenant une concurrence basée sur les verrous. Toutefois, un blocage trop important peut nuire aux performances. L'administrateur peut donc utiliser cette surveillance pour être prévenu quand la situation se prolonge au-delà de la valeur du paramètre WaitMinutes configuré pour un nombre de sessions supérieur au seuil configuré.
Le blocage peut avoir lieu pour plusieurs raisons attendues mais également dans des scénarios au sein desquels il peut être amélioré sans aucune perte de fonctionnalité correspondante pour l'application consommatrice de données.
La résolution des problèmes de blocage sur un serveur demande une connaissance de la charge de travail, des exigences et des utilisateurs, que l'administrateur doit prendre en compte quand il choisit une méthode de résolution. La résolution des problèmes de blocage comprend plusieurs actions possibles, dont voici une liste non exhaustive :
Ajustez les paramètres de configuration SSAS pour augmenter le parallélisme et éviter le blocage dû à la contention des ressources. Les changements de configuration de cette nature ne doivent pas être effectués sur des bases de données de production dont l'impact commercial est moyen ou élevé. Au préalable, il est nécessaire de procéder à des tests et d'en comprendre parfaitement les conséquences. L'administrateur doit consulter avec attention le Guide de performances multidimensionnelles SSAS (Chapitre 3 d'un point de vue général, et plus particulièrement la section 3.8 relative aux performances multi-utilisateurs) avant d'effectuer des changements sans l'avis du Support Microsoft. En effet, dans le cas contraire, ces modifications risquent de nuire aux performances du serveur au lieu de les améliorer.
Améliorez les performances de requête de manière générale pour les requêtes identifiées comme créant des blocages.
Identifiez la session de blocage, y compris l'opération de traitement, réduisez le blocage en planifiant correctement les travaux de traitement, en ajustant les requêtes et en définissant une configuration de délai d'expiration adéquate.
Passez en revue l'efficacité de la conception de base de données. Vous pouvez améliorer les travaux bloquants qui mettent du temps à s'exécuter sur un serveur en effectuant des changements de conception ou de configuration. Ainsi, pour réduire l'impact de leur blocage, vous pouvez planifier les travaux pour qu'ils s'exécutent à un moment où ce blocage n'a pas de conséquences importantes. Vous pouvez également ajouter des ressources au serveur si les compteurs de performances indiquent la présence de goulots d'étranglement, lesquels sont à l'origine des scénarios de long blocage.
Augmentez le seuil configuré et/ou le paramètre WaitMinutes configuré pour éviter cette alerte.
Désactivez entièrement la surveillance, si le blocage n'est pas un problème sur le serveur.
Configurer les propriétés du serveur dans Analysis Services
Documentation TechNet pour les compteurs de performances SSAS
Guide des performances multidimensionnelles SSAS
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é. | 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. |
|
Seuil critique | L'état d'intégrité change quand le nombre de sessions bloquées dépasse le seuil. | 10 |
Délai d'expiration (en 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 |
Minutes d'attente | Le paramètre Minutes d'attente définit le temps d'attente minimal avant que la session ne soit prise en compte par la surveillance. | 1 |
Target | Microsoft.SQLServer.2014.AnalysisServices.TabularDatabase | ||
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.2014.AnalysisServices.MonitorType.Database.BlockedSessionsNumber | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2014.AnalysisServices.UnitMonitor.TabularDatabase.BlockedSessionsNumber" Accessibility="Public" Enabled="true" Remotable="true" Priority="Normal" Target="SQLAS!Microsoft.SQLServer.2014.AnalysisServices.TabularDatabase" TypeID="Microsoft.SQLServer.2014.AnalysisServices.MonitorType.Database.BlockedSessionsNumber" ParentMonitorID="SystemHealth!System.Health.PerformanceState" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2014.AnalysisServices.UnitMonitor.TabularDatabase.BlockedSessionsNumber.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='WaitTime']$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='BlockedSPIDCount']$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="Healthy" HealthState="Success"/>
<OperationalState ID="Error" MonitorTypeStateID="Critical" HealthState="Error"/>
</OperationalStates>
<Configuration>
<ServiceName>$Target/Host/Property[Type='SQLAS!Microsoft.SQLServer.2014.AnalysisServices.Instance']/ServiceName$</ServiceName>
<ConnectionString>$Target/Host/Property[Type='SQLAS!Microsoft.SQLServer.2014.AnalysisServices.Instance']/ConnectionString$</ConnectionString>
<DatabaseName>$Target/Property[Type="SQLAS!Microsoft.SQLServer.2014.AnalysisServices.Database"]/DatabaseName$</DatabaseName>
<Threshold>10</Threshold>
<SampleCount>4</SampleCount>
<WaitMinutes>1</WaitMinutes>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>