Il monitoraggio restituisce un avviso quando le allocazioni di memoria da parte dell'istanza di SSAS superano la soglia di avviso configurata, espressa come percentuale dell'impostazione Limite di memoria totale per l'istanza di SSAS. Il monitoraggio genera un avviso critico quando queste allocazioni superano la soglia critica configurata.
Il monitoraggio restituisce un avviso quando le allocazioni di memoria da parte dell'istanza di SSAS superano la soglia di avviso configurata, espressa come percentuale dell'impostazione Limite di memoria totale per l'istanza di SSAS. Il monitoraggio genera un avviso critico quando queste allocazioni superano la soglia critica configurata.
In determinate circostanze SSAS può avvicinarsi o superare l'impostazione Limite di memoria totale. In alcuni casi, una singola operazione richiede una quantità di memoria al di sopra di tale limite e nonostante il server faccia tutto il possibile per cancellare memoria dalle altre attività meno immediate, talvolta le allocazioni possono superare inevitabilmente i limiti configurati, e pertanto sarà necessario forzare la non riuscita delle operazioni.
Tale condizione può verificarsi durante l'elaborazione di dimensioni grandi o di dati della tabella dei fatti, soprattutto se sono presenti attributi con tipi di dati che utilizzano grandi quantità di spazio, ed esempio stringhe lunghe, dati binari e così via, oppure se la dimensione contiene molti membri. Inoltre, le query eseguite nel server possono occupare grandi quantità di spazio, soprattutto se più dimensioni vengono unite con un cross join o se sono necessari calcoli significativi per derivare i risultati per le celle non aggregate precedentemente da un amministratore esperto o semplicemente che non è stato possibile aggregare in precedenza.
Quando vengono superati i limiti di memoria per un server, ci sono diversi approcci che gli amministratori possono usare per risolvere il problema. Dopo aver analizzato l'attività sottostante che causa l'utilizzo di memoria, i requisiti per il carico di lavoro del server, le risorse disponibili e altri fattori nonché dopo aver esaminato e letto attentamente la Guida alle prestazioni multidimensionali di SSAS o aver consultato il supporto tecnico Microsoft, a seconda delle necessità, per risolvere il problema è possibile adottare uno degli approcci seguenti:
Identificare le sessioni responsabili delle allocazioni di memoria più significative e chiuderle manualmente.
Identificare le sessioni delle allocazioni di memoria più significative ed esaminarle caso per caso ripianificando l'elaborazione dei processi o dei report, preallocando la memoria con query di riscaldamento della cache durante i periodi di basso utilizzo o progettando in anticipo aggregazioni specifiche, da compilare durante l'elaborazione, riducendo pertanto l'utilizzo di memoria da parte delle query dell'utente che verranno eseguite successivamente.
Aumentare la memoria fisica sul computer host.
Diminuire l'utilizzo di memoria da parte degli altri processi sul computer host, come ad esempio le istanze del motore di database relazionale di SQL Server o altre istanze di SSAS.
Aumentare il limite di memoria totale o 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 l'utilizzo di memoria (%) di Analysis Services supera la soglia. | 95 |
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. |
|
Timeout (secondi) | Specifica il tempo di esecuzione consentito per il flusso di lavoro prima che venga chiuso e contrassegnato come non riuscito. | 300 |
Soglia avviso (%) | Lo stato di integrità passa ad Avviso quando l'utilizzo di memoria (%) di Analysis Services supera la soglia ma rimane comunque inferiore alla soglia critica (%). | 80 |
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.MemoryUsagePercent | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.MemoryUsage" 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.MemoryUsagePercent" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.MemoryUsage.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="Above" HealthState="Error"/>
<OperationalState ID="Warning" MonitorTypeStateID="Between" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="Below" HealthState="Success"/>
</OperationalStates>
<Configuration>
<WarningThreshold>80</WarningThreshold>
<CriticalThreshold>95</CriticalThreshold>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>