TotalMemoryLimit-Konfiguration

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

Der Monitor warnt, wenn das konfigurierte TotalMemoryLimit für die SSAS-Instanz den konfigurierten Schwellenwert überschreitet, sodass die Belegung von physischem Speicher für grundlegende Funktionen des Betriebssystems gefährdet ist (mindestens 2 GB).

Knowledge Base article:

Zusammenfassung

Der Monitor warnt, wenn das konfigurierte TotalMemoryLimit für die SSAS-Instanz den konfigurierten Schwellenwert überschreitet, sodass die Belegung von physischem Speicher für grundlegende Funktionen des Betriebssystems gefährdet ist. Darüber hinaus berücksichtigt die Konfiguration keine möglichen Speicherbelegungen durch andere Prozesse als die spezifische überwachte Instanz. Dies muss von Administratoren beim Anpassen der TotalMemoryLimit-Einstellungen nach gründlichem Lesen des Leistungshandbuchs für SSAS (mehrdimensional) außerdem berücksichtigt werden.

Ursachen

TotalMemoryLimit muss so konfiguriert sein, dass zumindest dem Betriebssystem ausreichend Speicher für grundlegende Funktionen der Speicherverwaltung und der Treiber- und Hardwareinteraktion verbleibt. Wenn für das Betriebssystem nicht genügend Speicher verfügbar ist, um diese grundlegenden Funktionen auszuführen, können Systeminstabilitäten oder Systemfehler auftreten. Die Einstellung muss daher etwas unter 100 % konfiguriert sein, damit eine ausreichende Verfügbarkeit von physischem Speicher für die entsprechenden Funktionen sichergestellt ist. Ist die Einstellung zu hoch, warnt dieser Monitor vor der entsprechenden Bedingung.

Die SSAS-Standardkonfiguration für TotalMemoryLimit beträgt 80. Dieser Wert entspricht 80 % verfügbarem physischen Speicher auf dem Server. Sind weitere speicherintensive Prozesse vorhanden (z. B. das relationale SQL Server-Datenbankmodul), müssen sie berücksichtigt und die Speicherlimiteinstellungen entsprechend verringert werden. Wird die Zahl zu hoch gewählt, geht dem Betriebssystem möglicherweise der physische Speicher aus. Dies kann zu einer erheblichen Auslagerung von Arbeitsspeicher auf den Datenträger und damit zu Ineffizienz der Serverleistung führen.

Falls eine bestimmte Byteanzahl erforderlich ist: Werte über 100 werden als Anzahl von Bytes des physischen Speichers interpretiert.

Hinweis: Das relationale SQL Server-Datenbankmodul unterstützt eine feste Begrenzung für den maximalen Speicher. TotalMemoryLimit für das SSAS-Modul funktioniert jedoch etwas anders. TotalMemoryLimit ist der Grenzwert, ab dem der Server mit Nachdruck versucht, so schnell wie möglich Speicher freizugeben. Entsprechend ist LowMemoryLimit der Grenzwert, ab dem der Server noch zögerlich versucht, Speicher vom SSAS-Cache freizugeben, um möglichst die Auswirkungen auf vorhandene Sitzungen oder Abfragen, die sich bereits in der Ausführung befinden, gering zu halten. Beim Erreichen von TotalMemoryLimit wird die Serverleistung ggf. beeinträchtigt, da der Server mit großem Nachdruck Speicher aus dem Cache freigibt. Der Server unterstützt darüber hinaus eine HardMemoryLimit-Einstellung – ein Punkt, ab dem der Server damit beginnt, willkürlich Sitzungen zu beenden, um Speicher freizugeben. Dadurch treten bei einigen Benutzern möglicherweise Fehler auf, weshalb TotalMemoryLimit nicht in Form einer festen Grenze erzwungen wird, da manche Abfragen oder Aufträge naturgemäß sehr speicherintensiv sein können und das OLAP-Modul alle Anstrengungen unternimmt, sie innerhalb der für das Modul konfigurierten Grenzen zu verarbeiten.

Lösungen

Diese Bedingung kann durch eine der folgenden Maßnahmen behoben werden:

Extern

Überlegungen zur Speicherkonfiguration und Speichergröße in SQL Server 2008

TechNet-Dokumentation zu Analysis Services-Speichereigenschaften

Konfigurationseigenschaften von Analysis Services

Leistungshandbuch für SSAS (mehrdimensional)

Parameter, die außer Kraft gesetzt werden können

Name

Beschreibung

Standardwert

Aktiviert

Aktiviert oder deaktiviert den Workflow

True (wahr)

Generiert Warnungen

Definiert, ob der Workflow eine Warnung generiert

True (wahr)

Intervall (Sekunden)

Das periodische Intervall in Sekunden, in dem der Workflow ausgeführt werden soll.

604800

Synchronisierungszeit

Die in einem 24-Stunden-Format angegebene Synchronisierungszeit. Kann ausgelassen werden.

 

Warnungsschwellenwert (GB)

Der Monitor warnt, wenn das konfigurierte TotalMemoryLimit für die SSAS-Instanz den konfigurierten Schwellenwert überschreitet, sodass die Belegung von physischem Speicher für grundlegende Funktionen des Betriebssystems gefährdet ist (mindestens 2 GB).

2

Element properties:

TargetMicrosoft.SQLServer.2008.AnalysisServices.Instance
Parent MonitorSystem.Health.ConfigurationState
CategoryConfigurationHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2008.AnalysisServices.MonitorType.Instance.TotalMemoryConfiguration
RemotableTrue
AccessibilityPublic
Alert Message
SSAS 2008: Ungültige TotalMemoryLimit-Konfiguration
Das konfigurierte TotalMemoryLimit für die SSAS-Instanz ({0} GB) überschreitet den konfigurierten Schwellenwert für erforderliche Betriebssystemfunktionen und führt möglicherweise zur Systeminstabilität oder zu einem Systemfehler.
Gesamtspeicher auf dem Server: {2} GB
Insgesamt verwendeter Speicher: {5} GB
Von Nicht-SSAS-Prozessen verwendeter Speicher: {4} GB
Von SSAS verwendeter Speicher: {3} GB
Niedriges SSAS-Speicherlimit: {6} GB ({7} \%)
Hohes SSAS-Speicherlimit: {0} GB ({8} \%)
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.TotalMemoryConfiguration" Accessibility="Public" Enabled="true" Target="SQLAS!Microsoft.SQLServer.2008.AnalysisServices.Instance" ParentMonitorID="SystemHealth!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2008.AnalysisServices.MonitorType.Instance.TotalMemoryConfiguration" ConfirmDelivery="false">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.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/>
</Configuration>
</UnitMonitor>