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.
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.
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.
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:
Erhöhen Sie den verfügbaren physischen Speicher auf dem Servercomputer.
Verringern Sie die Belegungen durch Instanzen von SSAS oder relationalen Datenbanken durch Ändern des Entwurfs. Lesen Sie dazu zunächst den SSAS Multidimensional Performance Guide (Handbuch zur Leistung mehrdimensionaler SSAS-Datenbanken), oder wenden Sie sich an den Microsoft-Support.
Verringern Sie die Belegungen durch andere Prozesse durch jeweils geeignete Maßnahmen, oder beenden Sie Prozesse, die auf dem Server nicht erforderlich sind.
Planen Sie Aufträge oder Berichte auf betroffenen Instanzen so, dass gleichzeitige Arbeitsauslastungen vermieden werden, die zu einer übermäßigen Belegung des Serverarbeitsspeichers führen.
Ändern Sie die konfigurierten Schwellenwerte für die Warnung, um die Bedingung zu vermeiden.
Deaktivieren Sie den Monitor ganz, wenn die Speicherauslastung auf dem Server nicht relevant ist.
Ü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)
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. |
|
Target | Microsoft.SQLServer.2014.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.2014.AnalysisServices.MonitorType.Instance.MemoryUsageByOtherProcessPercent | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<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>