Consommation de mémoire de la liste de ressources partagées

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

Le moniteur passe à l'état Critique et émet une alerte lorsque la quantité de mémoire utilisée par la liste de ressources partagées dépasse le paramètre de seuil, exprimé sous forme de pourcentage de mémoire disponible pour les tables de données à mémoire optimisée de la liste de ressources partagées.

Knowledge Base article:

Résumé

Le moniteur passe à l'état Critique et émet une alerte lorsque la quantité de mémoire utilisée par la liste de ressources partagées dépasse le paramètre de seuil, exprimé sous forme de pourcentage de mémoire disponible pour les tables de données à mémoire optimisée de la liste de ressources partagées.

Quand la liste de ressources partagées nommée est mappée à une base de données à mémoire optimisée, elle surveille la mémoire allouée aux tables à mémoire optimisée, y compris les tables internes utilisées pour différentes structures au sein du moteur de données à mémoire optimisée.

Causes

Les données à mémoire optimisée de SQL Server utilisent plus de mémoire que SQL Server et différemment de SQL Server. Il est possible que la quantité de mémoire que vous avez installée et allouée pour les données à mémoire optimisée devienne inadéquate pour vos besoins croissants. Si c’est le cas, la mémoire pourrait s’avérer insuffisante.

Pour plus d'informations, consultez Liaison d’une base de données comprenant des tables à mémoire optimisée à une liste de ressources partagées.

Solutions

Afin de remédier au problème de mémoire faible ou épuisée, il convient de libérer de la mémoire existante en réduisant son utilisation ou de rendre plus de mémoire disponible pour vos tables de données à mémoire optimisée. Les actions pour y remédier sont notamment les suivantes :

Externe

Gestion de la mémoire pour les données à mémoire optimisée

Paramètres remplaçables

Nom

Description

Valeur par défaut

Priorité de l'alerte

Définit la priorité de l'alerte.

Normal

Gravité de l'alerte

Définit la gravité de l'alerte.

Erreur

Activé

Active ou désactive le flux de travail.

Oui

Génère des alertes

Définit si le flux de travail génère une alerte.

Oui

Intervalle (en secondes)

L'intervalle de temps récurrent en secondes pendant lequel le workflow est exécuté.

300

Nombre d'échantillons

Indique le nombre de dépassements de seuil d'une valeur mesurée avant la modification de l'état.

6

Retard du script (en millisecondes)

Ce paramètre définit le délai entre les requêtes T-SQL consécutives exécutées par le workflow. Cela peut aider à réduire l'encombrement généré par le workflow s'il existe un nombre important d'objets cible. Veuillez consulter le support de Microsoft avant de modifier ce paramètre.

0

Heure de synchronisation

L'heure de synchronisation spécifiée dans un format de 24 heures. Peut être omise.

00:06

Seuil

La valeur collectée sera comparée avec ce paramètre.

90

Délai d'expiration (en secondes)

Spécifie la durée pendant laquelle le workflow est autorisé à être exécuté avant d'être fermé et marqué comme un échec.

180

Element properties:

TargetMicrosoft.SQLServer.2014.UserResourcePool
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2014.MonitorType.UserResourcePool.MemoryConsumption
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL 2014 : Données à mémoire optimisée : la liste de ressources partagées utilise trop de mémoire.
La liste de ressources partagées « {0} » utilise trop de mémoire.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2014.Monitor.UserResourcePool.MemoryConsumption" Target="SQL2014Core!Microsoft.SQLServer.2014.UserResourcePool" ParentMonitorID="SystemHealth!System.Health.PerformanceState" TypeID="Microsoft.SQLServer.2014.MonitorType.UserResourcePool.MemoryConsumption" Accessibility="Public" Enabled="true" Remotable="true" Priority="Normal" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2014.Monitor.UserResourcePool.MemoryConsumption.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.ResourcePool"]/Name$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="ErrorState" MonitorTypeStateID="ErrorState" HealthState="Error"/>
<OperationalState ID="SuccessState" MonitorTypeStateID="SuccessState" HealthState="Success"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<ServerName>$Target/Host/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ServerName>
<SqlInstanceName>$Target/Host/Host/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.ServerRole"]/InstanceName$</SqlInstanceName>
<Value>$Data/Property[@Name='PoolUsedMemoryPercent']$</Value>
<PoolID>$Target/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.ResourcePool"]/PoolID$</PoolID>
<Threshold>90</Threshold>
<TimeoutSeconds>180</TimeoutSeconds>
<ScriptDelayMsec>0</ScriptDelayMsec>
<NumSamples>6</NumSamples>
</Configuration>
</UnitMonitor>