Il monitoraggio osserva l'utilizzo di memoria da parte dei processi non Analysis Services nel server in modo da garantire che sia sempre disponibile il valore di TotalMemoryLimit per Analysis Services.
L'utilizzo di memoria nel server che ospita l'istanza di SSAS può influire sull'integrità e le prestazioni del server entrando in conflitto per le risorse condivise da cui anche l'istanza deve effettuare le allocazioni. Tale condizione può portare all'esaurimento della memoria fisica disponibile sul computer, il che può forzare il sistema operativo a mappare la memoria virtuale al file di paging su disco, con ordini di grandezza più lenti rispetto alla memoria fisica. Per tutte le applicazioni aziendali critiche dipendenti da un'istanza SSAS, il server deve essere configurato in modo tale che gli altri processi, ad esempio antivirus, deframmentazione del disco, altre istanze di SSAS o il motore di database relazionale di SQL Server e così via, non allochino troppa memoria causando tale situazione.
Tra i processi più comuni che entrano i conflitto in maniera significativa con le istanze di SSAS per l'acquisizione della memoria ci sono soprattutto le altre istanze di SSAS, il motore di database relazionale di SQL Server o gli altri server di database, poiché tali processi tendono a utilizzare la maggior parte della memoria ospitata sui server in cui è ospitato anche SSAS. Ovviamente, anche un programma software diverso dai database può talvolta utilizzare una quantità eccessiva di memoria. Per tale motivo, le considerazioni sulla memoria possono influire spesso sulla configurazione di un server.
È possibile usare Gestione attività per esaminare l'utilizzo di memoria da parte dei vari processi presenti nel server. Nella scheda Processi in Windows Server 2008 R2 e nella scheda Dettagli in Windows Server 2012 è possibile ordinare i processi in base alla colonna Memoria in modo da individuare facilmente i processi che utilizzano la maggior parte della memoria del sistema. Se le istanze di SSAS (msmdsrv.exe) o il motore di database relazionale di SQL Server (sqlservr.exe) stanno utilizzando una quantità eccessiva di memoria, in questo modo viene subito rilevato e naturalmente è possibile vedere anche se gli altri processi del sistema stanno contribuendo a determinare questa condizione. Successivamente, sarà possibile intraprendere le dovute azioni correttive come ad esempio ottimizzare l'utilizzo della memoria delle istanze con interventi mirati eseguiti dall'amministratore di SQL, aggiungere hardware o ridurre/dividere il carico di lavoro sul computer.
Per risolvere i problemi di utilizzo totale del server, è necessario che gli amministratori comprendano e valutino diversi fattori tra cui i requisiti del carico di lavoro, le pianificazioni di processi e utenti, gli altri processi pianificati sul computer server e le risorse disponibili. Per risolvere le allocazioni eccessive di memoria totale sul computer server, è possibile intraprendere una delle azioni seguenti:
Aumentare la memoria fisica disponibile sul computer server.
Diminuire l'utilizzo di memoria da parte delle istanze di SSAS o delle istanze del database relazionale modificando la progettazione dopo aver consultato la Guida alle prestazioni multidimensionali di SSAS o aver contattato il supporto tecnico Microsoft.
Diminuire l'utilizzo di memoria da parte degli altri processi tramite misure specifiche da adottare caso per caso o terminando i processi non necessari nel server.
Pianificare i processi o i report sulle istanze interessate in modo da evitare un carico di lavoro simultaneo tale da consentire un'allocazione eccessiva della memoria del server.
Ottimizzare le soglie configurate per l'avviso in modo da evitare tale condizione.
Disabilitare completamente il monitoraggio se l'utilizzo di memoria non rappresenta un problema per il server.
Documentazione TechNet per le proprietà della memoria di Analysis Services
Configurare le proprietà del server in Analysis Services
Guida alle prestazioni multidimensionali di SSAS
Nome | Descrizione | Valore predefinito |
Soglia critica (%) | Lo stato di integrità passa a Critico quando la memoria disponibile non riservata (%) scende sotto la soglia. | 5 |
Abilitato | Abilita o disabilita il flusso di lavoro | True |
Genera avvisi | Definisce se il flusso di lavoro genera un avviso | True |
Intervallo (secondi) | Intervallo di tempo ricorrente in secondi in cui eseguire il flusso di lavoro. | 900 |
Ora di sincronizzazione | Ora di sincronizzazione specificata usando il formato a 24 ore. Può essere omessa. |
|
Soglia avviso (%) | Lo stato di integrità passa ad Avviso quando la memoria disponibile non riservata (%) scende sotto la soglia ma rimane comunque superiore alla soglia critica (%). | 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/>
</Configuration>
</UnitMonitor>