Il monitoraggio avvisa quando il numero di sessioni bloccate per un periodo di tempo più lungo dell'impostazione configurata di WaitMinutes supera la soglia configurata.
Il monitoraggio avvisa se il numero di sessioni bloccate per un periodo di tempo più lungo dell'impostazione configurata di WaitMinutes supera la soglia configurata. Il blocco si verifica quando una sessione mantiene un blocco su una risorsa specifica e un'altra sessione prova ad acquisire un tipo di blocco in conflitto sulla stessa risorsa. Il blocco è una caratteristica inevitabile di qualsiasi sistema di gestione di database con concorrenza basata sul blocco. Un numero troppo elevato di blocchi può tuttavia causare problemi di prestazioni. Pertanto, l'amministratore può usare questo monitoraggio per rendersi conto di quando tale condizione si verifica per un periodo di tempo più lungo dell'impostazione configurata di WaitMinutes per un numero di sessioni superiore alla soglia configurata.
Un blocco può verificarsi per diversi motivi previsti ma può anche verificarsi in scenari in cui può essere ottimizzato senza nessuna perdita delle funzionalità corrispondenti richieste dall'applicazione che utilizza i dati.
La risoluzione dei problemi di blocco in un server richiede la conoscenza del carico di lavoro, dei requisiti e degli utenti che l'amministratore deve considerare per la scelta di una linea d'azione appropriata per la soluzione. La risoluzione dei problemi di blocco potrebbe includere diverse azioni potenziali, tra le quali ad esempio:
Modificare le impostazioni di configurazione di SSAS per aumentare il parallelismo in modo da evitare il blocco a causa di una contesa delle risorse. È consigliabile non eseguire modifiche di configurazione di questo tipo per i database di produzione a medio o alto impatto aziendale senza prima testare e comprendere appieno le implicazioni. L'amministratore deve leggere attentamente la Guida alle prestazioni multidimensionali di SSAS (in generale il Capitolo 3 e nello specifico la sezione 3.8 relativa alle considerazioni sulle prestazioni multiutente) prima di effettuare tali modifiche senza la consultazione diretta e le indicazioni del supporto tecnico Microsoft, per evitare di peggiorare le prestazioni del server anziché migliorarle.
Migliorare le prestazioni delle query, in generale per le query che rappresentano un blocco.
Identificare la sessione di blocco compresa l'operazione di elaborazione e ridurre il blocco pianificando in modo corretto i processi di elaborazione, ottimizzando le query e impostando una configurazione di timeout appropriata.
Esaminare la progettazione dei database per verificarne l'efficienza. È possibile migliorare i processi di blocco a esecuzione prolungata in un server effettuando modifiche alla progettazione o alla configurazione. Pertanto, per ridurne il grado di blocco, i processi possono essere pianificati in un periodo in cui gli effetti del blocco non causano gravi conseguenze. È possibile anche aggiungere altre risorse al server se l'analisi dei contatori delle prestazioni denota la presenza di colli di bottiglia delle prestazioni che comportano scenari di blocco prolungato.
Aumentare la soglia configurata e/o l'impostazione configurata di WaitMinutes per evitare l'avviso.
Disabilitare completamente il monitoraggio se il blocco non rappresenta un problema per il server.
Configurare le proprietà del server in Analysis Services
Guida alle prestazioni multidimensionali di SSAS
Nome | Descrizione | Valore predefinito |
Abilitato | Abilita o disabilita il flusso di lavoro | Sì |
Genera avvisi | Definisce se il flusso di lavoro genera un avviso | Sì |
Intervallo (secondi) | Intervallo di tempo ricorrente in secondi in cui eseguire il flusso di lavoro. | 900 |
Numero di campioni | Lo stato di integrità cambia se il numero di violazioni di soglia è superiore o uguale al numero minimo di violazioni. | 4 |
Ora di sincronizzazione | Ora di sincronizzazione specificata usando il formato a 24 ore. Può essere omessa. |
|
Soglia critica | Lo stato di integrità cambia quando il numero di sessioni bloccate supera la soglia. | 10 |
Timeout (secondi) | Specifica il tempo di esecuzione consentito per il flusso di lavoro prima che venga chiuso e contrassegnato come non riuscito. | 300 |
Minuti di attesa | Il parametro Minuti di attesa definisce il tempo di attesa minimo prima che la sessione venga presa in considerazione dal monitoraggio. | 1 |
Target | Microsoft.SQLServer.2008.AnalysisServices.MultidimensionalDatabase | ||
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.Database.BlockedSessionsNumber | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.MultidimensionalDatabase.BlockedSessionsNumber" Accessibility="Public" Enabled="true" Remotable="true" Priority="Normal" Target="SQLAS!Microsoft.SQLServer.2008.AnalysisServices.MultidimensionalDatabase" TypeID="Microsoft.SQLServer.2008.AnalysisServices.MonitorType.Database.BlockedSessionsNumber" ParentMonitorID="SystemHealth!System.Health.PerformanceState" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Database.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.2008.AnalysisServices.Instance']/ServiceName$</ServiceName>
<ConnectionString>$Target/Host/Property[Type='SQLAS!Microsoft.SQLServer.2008.AnalysisServices.Instance']/ConnectionString$</ConnectionString>
<DatabaseName>$Target/Property[Type="SQLAS!Microsoft.SQLServer.2008.AnalysisServices.Database"]/DatabaseName$</DatabaseName>
<Threshold>10</Threshold>
<SampleCount>4</SampleCount>
<WaitMinutes>1</WaitMinutes>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>