Speicherauslastung auf dem Server

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

Der Monitor überwacht die Speicherauslastung durch andere Prozesse als Analysis Services-Prozesse auf dem Server, um sicherzustellen, dass TotalMemoryLimit für Analysis Services immer verfügbar ist.

Knowledge Base article:

Zusammenfassung

Die Speicherauslastung auf dem Server, auf dem die SSAS-Instanz gehostet wird, kann die Integrität und Leistung des Servers beeinträchtigen, wenn Konkurrenz um gemeinsam verwendete Ressourcen herrscht, die auch von der Instanz belegt werden müssen. Dies kann zur Auslastung des auf dem Computer verfügbaren physischen Speichers führen. Das Betriebssystem wird dadurch ggf. gezwungen, der Auslagerungsdatei auf dem Datenträger virtuellen Speicher zuzuordnen, der bedeutend langsamer als physischer Speicher ist. Für geschäftskritische Anwendungen, die von einer SSAS-Instanz abhängig sind, muss der Server so konfiguriert sein, dass andere Prozesse (z. B. Antivirensoftware, Datenträgerdefragmentierung, andere Instanzen von SSAS oder dem relationalen SQL Server-Datenbankmodul usw.) nicht übermäßig Speicher belegen und so diesen Umstand herbeiführen.

Ursachen

Zu den häufigsten Prozessen, die mit SSAS-Instanzen maßgeblich um Speicher konkurrieren, gehören in erster Linie andere Instanzen von SSAS sowie das relationale SQL Server-Datenbankmodul bzw. andere Datenbankserver, da es sich bei diesen Prozessen tendenziell um die speicherintensivsten handelt, die auf Servern zusammen mit SSAS gehostet werden. Selbstverständlich kann manchmal auch von anderer Software, die nicht mit Datenbanken in Zusammenhang steht, intensiv Speicher belegt werden. Überlegungen zum Arbeitsspeicher können daher regelmäßig Einfluss auf die Konfiguration eines Servers haben.

Der Task-Manager kann verwendet werden, um die Arbeitsspeichernutzung durch verschiedene Prozesse auf dem Server zu untersuchen. Auf der Registerkarte "Prozesse" in Window Server 2008 R2 und auf der Registerkarte "Details" in Windows Server 2014 können Sie nach der Arbeitsspeicherspalte sortieren, um schnell die Prozesse zu ermitteln, die den meisten Arbeitsspeicher im System belegen. Wenn Instanzen von SSAS (msmdsrv.exe) oder des relationalen SQL Server-Datenbankmoduls (sqlservr.exe) sehr viel Arbeitsspeicher belegen, bietet dies eine einfache Möglichkeit, die Nutzung schnell zu idnetifizieren. Natürlich ist es außerdem möglich, zu überprüfen, ob andere Prozesse im System möglicherweise zur Bedingung beitragen. Danach können korrigierende Aktionen (zum Beispiel das Optimieren der Arbeitsspeichernutzung der Instanzen durch den SQL-Administrator, das Hinzufügen von Hardware oder das Reduzieren/Aufteilen der Arbeislast auf dem Computer) entsprechend ausgeführt werden.

Lösungen

Für das Lösen von Problemen bei der Gesamtauslastung des Servers müssen Administratoren zahlreiche Faktoren kennen und berücksichtigen, insbesondere die Arbeitsauslastungsanforderungen, Benutzer- und Auftragszeitpläne, andere geplante Vorgänge auf dem Servercomputer sowie die verfügbaren Ressourcen. Zu den möglichen Gegenmaßnahmen bei übermäßigen Gesamtspeicherbelegungen auf dem Servercomputer gehören:

Extern

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

TechNet-Dokumentation zu Analysis Services-Speichereigenschaften

Konfigurieren von Servereigenschaften in Analysis Services

TechNet-Dokumentation zu Leistungsindikatoren (SSAS)

Leistungshandbuch für SSAS (mehrdimensional)

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

Name

Beschreibung

Standardwert

Kritischer Schwellenwert (%)

Der Integritätsstatus ändert sich in "Kritisch", wenn "Nicht reserviert frei (%)" unter den Schwellenwert fällt.

5

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.

900

Synchronisierungszeit

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

4

Warnungsschwellenwert (%)

Der Integritätsstatus ändert sich in "Warnung", wenn "Nicht reserviert frei (%)" unter den Schwellenwert fällt, aber noch über dem kritischen Schwellenwert (%) liegt.

 

Element properties:

TargetMicrosoft.SQLServer.2014.AnalysisServices.Instance
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2014.AnalysisServices.MonitorType.Instance.MemoryUsageByOtherProcessPercent
RemotableTrue
AccessibilityPublic
Alert Message
SSAS 2014: Andere Prozesse haben zu viel Arbeitsspeicher zugeordnet.
Der Arbeitsspeicher, der von der Einstellung TotalMemoryLimit vorgeschrieben ist, ist eventuell für SSAS nicht verfügbar, da anderen Prozessen zu viel Arbeitsspeicher zugeordnet wurde ({4} GB).
Gesamter Arbeitsspeicherplatz auf dem Server: {2} GB
Gesamte Arbeitsspeicherauslastung: {5} GB
Von Nicht-SSAS-Prozessen genutzter Arbeitsspeicher: {4} GB
Von SSAS genutzter Arbeitsspeicher: {3} GB
Untere Arbeitsspeichergrenze für SSAS: {6} GB ({7}\%)
Obere Arbeitsspeichergrenze für SSAS: {0} GB ({8}\%)
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2014.AnalysisServices.UnitMonitor.Instance.MemoryUsageByOtherProcess" Accessibility="Public" Enabled="true" Target="SQLAS!Microsoft.SQLServer.2014.AnalysisServices.Instance" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2014.AnalysisServices.MonitorType.Instance.MemoryUsageByOtherProcessPercent" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2014.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>