Configurazione del limite di memoria totale

Microsoft.SQLServer.2014.AnalysisServices.UnitMonitor.Instance.TotalMemoryConfiguration (UnitMonitor)

Il monitoraggio avvisa quando il limite di memoria totale configurato per l'istanza di SSAS supera la soglia configurata, rischiando l'allocazione della memoria fisica richiesta dal sistema operativo per eseguire le funzioni essenziali, almeno 2 GB.

Knowledge Base article:

Riepilogo

Il monitoraggio avvisa quando il limite di memoria totale configurato per l'istanza di SSAS supera la soglia configurata, rischiando l'allocazione della memoria fisica richiesta dal sistema operativo per eseguire le funzioni essenziali. Inoltre, la configurazione non include l'utilizzo di memoria potenziale da parte dei processi diversi dall'istanza monitorata specifica, che devono essere presi in considerazione dall'amministratore anche per la modifica delle impostazioni del limite di memoria totale dopo aver letto attentamente la Guida alle prestazioni multidimensionali di SSAS.

Cause

Il limite di memoria totale deve consentire almeno lo spazio sufficiente richiesto dal sistema operativo per eseguire le funzioni essenziali di gestione della memoria e di interazione tra driver e hardware. Se la memoria disponibile del sistema operativo è insufficiente per queste funzioni essenziali, può verificarsi un errore o l'instabilità del sistema. Pertanto, è necessario configurare l'impostazione un po' al di sotto del 100%, in modo da garantire che la memoria fisica disponibile per tali funzioni sia sufficiente. Se viene impostato un valore troppo alto, il monitoraggio visualizzerà un avviso per segnalare tale condizione.

La configurazione predefinita di SSAS prevede 80 come valore per il limite di memoria totale, che rappresenta l'80% della memoria fisica disponibile nel server. Valutare se sono presenti altri processi che utilizzano grandi quantità di memoria, ad esempio il motore di database relazionale di SQL Server, e in tal caso abbassare le impostazioni del limite di memoria di conseguenza. Se viene impostato un valore troppo alto, potrebbe esaurirsi la memoria fisica per il sistema operativo e potrebbero essere necessarie elevate quantità di paging del disco causando prestazioni insufficienti del server.

Se è richiesto un numero specifico di byte, qualsiasi valore maggiore di 100 viene interpretato come numero di byte della memoria fisica.

Nota: diversamente dal motore di database relazionale di SQL Server che supporta un limite di memoria massimo, il limite di memoria totale del motore SSAS funziona in modo leggermente diverso. Il limite di memoria totale rappresenta il limite raggiunto il quale il server inizierà subito a provare a cancellare memoria il più rapidamente possibile. Analogamente, il limite di memoria minimo rappresenta il limite raggiunto il quale il server inizierà a provare a cancellare memoria dalla cache di SSAS in modo differito, cercando di ridurre l'impatto sulle sessioni esistenti o sulle query già in corso. Quando viene raggiunto il limite di memoria totale, le funzionalità del server potrebbero venire compromesse, poiché il server cancellerà memoria dalla cache in modo molto drastico. Il server supporta anche l'impostazione del limite di memoria massimo, un valore raggiunto il quale il server inizierà arbitrariamente a terminare le sessioni per provare a liberare memoria. Ciò causerà potenzialmente errori per alcuni utenti ed è per questo motivo che il limite di memoria totale non viene forzato come limite assoluto, in quanto alcune query o alcuni processi potrebbero usare un'elevata quantità di memoria solo per loro natura e il motore OLAP farà il possibile per gestirli entro i limiti supportati.

Soluzioni

Per risolvere questa condizione, intraprendere una delle azioni seguenti:

Risorse esterne

Considerazioni sulla configurazione della memoria e sul dimensionamento in SQL Server 2014

Documentazione TechNet per le proprietà della memoria di Analysis Services

Configurare le proprietà del server in Analysis Services

Documentazione TechNet per i contatori delle prestazioni di SSAS

Guida alle prestazioni multidimensionali di SSAS

Parametri di cui è possibile eseguire l'override

Nome

Descrizione

Valore predefinito

Abilitato

Abilita o disabilita il flusso di lavoro

Genera avvisi

Definisce se il flusso di lavoro genera un avviso

Intervallo (secondi)

Intervallo di tempo ricorrente in secondi in cui eseguire il flusso di lavoro.

604800

Ora di sincronizzazione

Ora di sincronizzazione specificata usando il formato a 24 ore. Può essere omessa.

 

Soglia avviso (GB)

Il monitoraggio avvisa quando il limite di memoria totale configurato per il sistema operativo supera la soglia configurata, rischiando l'allocazione della memoria fisica richiesta dal sistema operativo per eseguire le funzioni essenziali, almeno 2 GB.

2

Timeout (secondi)

Specifica il tempo di esecuzione consentito per il flusso di lavoro prima che venga chiuso e contrassegnato come non riuscito.

300

Element properties:

TargetMicrosoft.SQLServer.2014.AnalysisServices.Instance
Parent MonitorSystem.Health.ConfigurationState
CategoryConfigurationHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2014.AnalysisServices.MonitorType.Instance.TotalMemoryConfiguration
RemotableTrue
AccessibilityPublic
Alert Message

SSAS 2014: Configurazione del limite di memoria totale non valida
Il limite di memoria totale configurato per l'istanza di SSAS ({0} GB) supera la soglia configurata richiesta per le funzioni essenziali del sistema operativo e può causare un errore o l'instabilità del sistema.
Memoria totale nel server: {2} GB
Utilizzo memoria totale: {5} GB
Memoria usata dai processi non SSAS: {4} GB
Memoria usata da SSAS: {3} GB
Limite di memoria SSAS minimo: {6} GB ({7}\%)
Limite di memoria SSAS massimo: {0} GB ({8}\%)
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2014.AnalysisServices.UnitMonitor.Instance.TotalMemoryConfiguration" Accessibility="Public" Enabled="true" Target="SQLAS!Microsoft.SQLServer.2014.AnalysisServices.Instance" ParentMonitorID="SystemHealth!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2014.AnalysisServices.MonitorType.Instance.TotalMemoryConfiguration" ConfirmDelivery="false">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2014.AnalysisServices.UnitMonitor.Instance.TotalMemoryConfiguration.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</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="Warning" MonitorTypeStateID="NotConfigured" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="Configured" HealthState="Success"/>
</OperationalStates>
<Configuration>
<Threshold>2</Threshold>
<IntervalSeconds>604800</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>