Conflitto di configurazione della memoria con SQL Server

Microsoft.SQLServer.2012.AnalysisServices.UnitMonitor.Instance.ConfigurationConflictWithSQLServer (UnitMonitor)

Il monitoraggio avvisa se nel server è in esecuzione un processo del motore di database relazionale di SQL Server e se la configurazione del limite di memoria totale per l'istanza di SSAS è superiore alla soglia specificata in modo da garantire che il processo di SQL Server abbia memoria sufficiente.

Knowledge Base article:

Riepilogo

L'impostazione di configurazione del limite di memoria totale per SQL Server Analysis Services deve essere modificata di conseguenza in modo da contenere le allocazioni di memoria per gli altri processi del computer.

Cause

In particolare, il motore di database relazionale di SQL Server rappresenta un esempio principale di un normale processo che può utilizzare risorse di memoria in un computer che esegue anche SSAS, e in tale circostanza può verificarsi un conflitto per l'acquisizione di memoria fisica in quanto entrambi i componenti utilizzano gran parte della stessa risorsa fissa. In tale condizione è necessario configurare entrambi i servizi di database in modo da consentire a entrambi di condividere la memoria fisica sufficiente per poter eseguire le relative funzioni necessarie. Se per il limite di memoria totale di SSAS è stato configurato un valore troppo alto, SSAS potrebbe utilizzare una quantità eccessiva di memoria, determinando l'esaurimento della memoria fisica, a causa del conflitto con il motore di database relazionale (o anche con altri processi che richiedono di fatto un elevato utilizzo di memoria). È consigliabile quindi configurare un valore sufficientemente basso per il limite di memoria totale in modo da consentire l'utilizzo di memoria configurato di SQL Server, oltre a un margine per il sistema operativo e per altri processi tipici essenziali nel computer.

Soluzioni

Quando si verificano conflitti di configurazione della memoria, è necessario che l'amministratore valuti le risorse e le richieste degli utenti oltre agli altri processi e che quindi modifichi di conseguenza la configurazione di tutti i processi rilevanti. Lo scenario più comune di questo tipo di problema in un server di database Microsoft è rappresentato dalle istanze di SSAS e dal motore di database relazionale di SQL Server. Fortunatamente, entrambi i servizi includono impostazioni di configurazione che possono essere modificate a seconda delle necessità. Non esiste un'impostazione del limite di memoria totale universale per SSAS né un'impostazione del limite di memoria massimo per il motore di database relazionale di SQL Server, pertanto la soglia di questo avviso può essere modificata dall'amministratore per includere ogni ambiente specifico. Quando si verifica questo conflitto, è possibile provare a risolvere tale condizione adottando uno degli approcci potenziali seguenti:

Risorse esterne

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

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 (%)

Lo stato di integrità cambia se nel server è in esecuzione un processo del motore di database relazionale di SQL Server e se l'impostazione di configurazione del limite di memoria totale per l'istanza di SSAS supera la soglia.

40

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.2012.AnalysisServices.Instance
Parent MonitorSystem.Health.ConfigurationState
CategoryConfigurationHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2012.AnalysisServices.MonitorType.Instance.ConfigurationConflictWithSQLServer
RemotableTrue
AccessibilityPublic
Alert Message
SSAS 2012: conflitto di configurazione della memoria con SQL Server
L'impostazione della configurazione del limite di memoria totale ({0} GB) dell'istanza di SQL Server Analysis Services lascia {1} GB su {2} GB per il sistema operativo e SQL Server e tale valore è al di sotto della soglia configurata per l'avviso.
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.2012.AnalysisServices.UnitMonitor.Instance.ConfigurationConflictWithSQLServer" Accessibility="Public" Enabled="true" Target="SQLAS!Microsoft.SQLServer.2012.AnalysisServices.Instance" ParentMonitorID="SystemHealth!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2012.AnalysisServices.MonitorType.Instance.ConfigurationConflictWithSQLServer" ConfirmDelivery="false">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2012.AnalysisServices.UnitMonitor.Instance.ConfigurationConflictWithSQLServer.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="ConfigurationConflict" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="NoConfigurationConflict" HealthState="Success"/>
</OperationalStates>
<Configuration>
<Threshold>40</Threshold>
<IntervalSeconds>604800</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>