Потребление памяти пулом ресурсов

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

Монитор переходит в критическое состояние и создает предупреждение, когда объем используемой пулом ресурсов памяти превышает заданное пороговое значение, выраженное в процентах от памяти, доступной для оптимизированных для памяти таблиц, для данного пула ресурсов.

Knowledge Base article:

Сводка

Монитор переходит в критическое состояние и создает предупреждение, когда объем используемой пулом ресурсов памяти превышает заданное пороговое значение, выраженное в процентах от памяти, доступной для оптимизированных для памяти таблиц, для данного пула ресурсов.

Именованный пул ресурсов при сопоставлении с базой данных, оптимизированной для памяти, отслеживает память, выделяемую всем таблицам, оптимизированным для памяти, включая внутренние таблицы, используемые для различных структур механизма оптимизированных для памяти данных.

Причины

SQL Server с оптимизированными для памяти данными использует память в большем объеме и иначе, чем SQL Server. Может оказаться, что объема памяти, установленного и выделенного для оптимизированных для памяти данных, станет недостаточно для удовлетворения ваших растущих потребностей. В этом случае вы можете столкнуться с нехваткой памяти.

Дополнительные сведения см. в статье Связывание базы данных с таблицами, оптимизированными для памяти, с пулом ресурсов.

Решения

Для решения проблемы малого объема или нехватки памяти необходимо либо освободить существующую память, сократив ее использование, либо выделить больше доступной памяти для оптимизированных для памяти таблиц. Возможные действия по решению проблемы могут включать следующее:

Внешнее

Управление памятью для оптимизированных для памяти данных

Переопределяемые параметры

Название

Описание

Значение по умолчанию

Приоритет предупреждения

Определяет приоритет предупреждения.

Обычные

Серьезность предупреждения

Определяет серьезность предупреждения.

Ошибка

Включено

Включает или отключает рабочий процесс.

Да

Создает предупреждения

Определяет, создает ли рабочий процесс предупреждения.

Да

Интервал (в секундах)

Повторяющийся интервал времени в секундах, по истечении которого запускается рабочий процесс.

300

Число выборок

Показывает, сколько раз измеряемая величина должна пересечь пороговое значение, чтобы состояние изменилось.

6

Задержка скрипта (в миллисекундах)

Этот параметр определяет задержку между последовательными запросами T-SQL, выполняемыми в рабочем процессе. Это может помочь уменьшить нагрузку, создаваемую рабочим процессом в случае большого числа целевых объектов. Пожалуйста, проконсультируйтесь со службой поддержки Майкрософт перед изменением этого параметра.

0

Время синхронизации

Время синхронизации указывается в 24-часовом формате и может быть опущено.

00:06

Порог

Собранное значение будет сравниваться с этим параметром.

90

Время ожидания (в секундах)

Определяет время, в течение которого возможно выполнение рабочего процесса перед закрытием и пометкой как сбойный.

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: данные, оптимизированные для памяти — пул ресурсов использует слишком много памяти.
Пул ресурсов "{0}" использует слишком много памяти.
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>