Arbeitsspeichernutzung durch den Ressourcenpool

Microsoft.SQLServer.Windows.Monitor.UserResourcePool.MemoryConsumption (UnitMonitor)

Der Monitor gibt einen kritischen Status und eine Warnung aus, wenn die vom Ressourcenpool genutzte Speichermenge über dem festgelegten Schwellenwert liegt. Dieser Wert wird als Prozentsatz des verfügbaren Speichers für speicheroptimierte Datentabellen für den entsprechenden Ressourcenpool angegeben.

Knowledge Base article:

Zusammenfassung

Der Monitor gibt einen kritischen Status und eine Warnung aus, wenn die vom Ressourcenpool genutzte Speichermenge über dem festgelegten Schwellenwert liegt. Dieser Wert wird als Prozentsatz des verfügbaren Speichers für speicheroptimierte Datentabellen für den entsprechenden Ressourcenpool angegeben.

Wenn der benannte Ressourcenpool einer Datenbank mit speicheroptimierten Tabellen zugeordnet ist, verfolgt dieser den Arbeitsspeicher nach, der allen speicheroptimierten Tabellen zugeordnet wurde, darunter auch internen, für verschiedene Strukturen innerhalb des speicheroptimierten Datenmoduls verwendeten Tabellen.

Ursachen

Die Speichernutzung durch speicheroptimierte SQL Server-Daten unterscheidet sich von der Speichernutzung durch SQL Server. Es kann vorkommen, dass die von Ihnen installierte und für speicheroptimierte Daten zugewiesene Speichermenge Ihren gestiegenen Anforderungen nicht mehr entspricht. In diesem Fall ist möglicherweise nicht genügend Arbeitsspeicher vorhanden.

Weitere Informationen finden Sie in folgendem Artikel: Binden einer Datenbank mit speicheroptimierten Tabellen an einen Ressourcenpool.

Lösungen

Um das Problem zu beheben, dass zu wenig oder gar kein Arbeitsspeicher verfügbar ist, müssen Sie entweder vorhandenen Speicherplatz durch Verringerung der Nutzung freigeben oder mehr Speicher für die speicheroptimierten Datentabellen zur Verfügung stellen. Folgende Korrekturmaßnahmen sind möglich:

Extern

So verwalten Sie Ihren Arbeitsspeicher für speicheroptimierte Daten

Überschreibbare Parameter

Name

Beschreibung

Standardwert

Warnungspriorität

Definiert die Warnungspriorität.

Normal

Warnungsschweregrad

Definiert den Warnungsschweregrad.

Fehler

Aktiviert

Aktiviert oder deaktiviert den Workflow.

Ja

Generiert Warnungen

Definiert, ob der Workflow eine Warnung generiert.

Ja

Intervall (Sekunden)

Gibt das Wiederholungsintervall in Sekunden für die Ausführung des Workflows an.

900

Anzahl der Abtastungen

Gibt an, wie oft ein gemessener Wert einen Schwellenwert verletzen muss, damit der Status geändert wird.

6

Synchronisierungszeit

Die Synchronisierungszeit, angegeben im 24-Stunden-Format. Dieser Wert kann ausgelassen werden.

 

Schwellenwert

Der ermittelte Wert wird mit diesem Parameter verglichen.

90

Timeout (Sekunden)

Gibt die Zeit an, zu der der Workflow ausgeführt werden dann, bevor er geschlossen und als fehlerhaft markiert wird.

300

Timeout für Datenbankverbindung (Sekunden)

Es tritt ein Fehler beim Workflow auf, und ein Ereignis wird registriert, wenn der Workflow nicht innerhalb des angegebenen Zeitraums auf die Datenbank zugreifen kann.

15

Element properties:

TargetMicrosoft.SQLServer.Windows.UserResourcePool
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.Windows.MonitorType.UserResourcePool.MemoryConsumption
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL unter Windows: Speicheroptimierte Daten: Ressourcenpool verwendet zu viel Speicher.
Ressourcenpool "{0}" verwendet zu viel Arbeitsspeicher.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.Windows.Monitor.UserResourcePool.MemoryConsumption" Target="SqlDiscW!Microsoft.SQLServer.Windows.UserResourcePool" ParentMonitorID="Health!System.Health.PerformanceState" TypeID="Microsoft.SQLServer.Windows.MonitorType.UserResourcePool.MemoryConsumption" Accessibility="Public" Enabled="true" Remotable="true" Priority="Normal" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Windows.Monitor.UserResourcePool.MemoryConsumption.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.ResourcePool"]/Name$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="ErrorState" MonitorTypeStateID="ErrorState" HealthState="Error"/>
<OperationalState ID="SuccessState" MonitorTypeStateID="SuccessState" HealthState="Success"/>
</OperationalStates>
<Configuration>
<MachineName>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<NetbiosComputerName>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<ConnectionString>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<InstanceVersion>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<MonitoringType>$Target/Host/Host/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
<SqlExecTimeoutSeconds>60</SqlExecTimeoutSeconds>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<Threshold>90</Threshold>
<NumSamples>6</NumSamples>
<PoolName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.ResourcePool"]/Name$</PoolName>
</Configuration>
</UnitMonitor>