Конфликт конфигурации памяти с SQL Server

Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.ConfigurationConflictWithSQLServer (UnitMonitor)

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

Knowledge Base article:

Сводка

Параметр TotalMemoryLimit конфигурации служб Analysis Services SQL Server должен быть настроен соответствующим образом, чтобы обеспечить распределение памяти для других процессов на компьютере.

Причины

Ядро сервера SQL реляционных баз данных, в частности, является основным примером общего процесса, который может потреблять ресурсы памяти на компьютере, на котором также работает SSAS, и это обстоятельство может привести к конкуренции за физическую память со стороны обеих тяжелых потребителей одного и того же фиксированного ресурса. Этот факт требует, чтобы обе службы базы данных были настроены таким образом, предоставляя друг другу достаточно физической памяти, чтобы каждая из них могла выполнять необходимые функции. Если параметр TotalMemoryLimit конфигурации SSAS имеет слишком высокое значение, то SSAS может занимать чрезмерное количество память, что приведет к истощению физической памяти из-за конкуренции с реляционной базой данных (или другим процессом с высоким потреблением памяти). Параметр TotalMemoryLimit должен иметь достаточно низкое значение, чтобы предоставлять процессу SQL Server настроенный объем памяти для использования, а также запас для операционной системы и других типичных процессов с использованием памяти, которые необходимы на компьютере.

Решения

При возникновении конфликтов конфигурации памяти, ресурсы и потребности пользователей и других процессов должны быть проанализированы администратором, а затем должна быть произведена необходимая корректировка настроек всех соответствующих процессов. Наиболее распространенным сценарии для решения этого типа проблем на сервере баз данных Microsoft возникают из экземпляра (ов) SSAS и компонента ядра реляционной базы данных SQL. К счастью, обе службы обладают функциями настройки конфигурации, которые могут быть скорректированы по мере необходимости. Нет универсального верного значения параметра TotalMemoryLimit для SSAS или параметра максимального предела памяти для реляционной базы данных SQL, поэтому пороговое значения для этого предупреждения может быть скорректировано администратором с учетом каждой конкретной среды. При возникновении состояние может быть разрешено с помощью любого из многих возможных подходов:

Внешнее

Документация TechNet по свойствам памяти служб Analysis Services

Настройка свойств сервера для служб Analysis Services

Руководство по настройке производительности многомерных служб SSAS

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

Название

Описание

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

Включено

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

Истина

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

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

Истина

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

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

604800

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

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

 

Пороговое значение предупреждения (в %)

Состояние работоспособности изменяется, если имеется процесс ядра реляционной базы данных SQL Server, запущенный на сервере и параметр TotalMemoryLimit для экземпляра SSAS превышает пороговое значение.

40

Element properties:

TargetMicrosoft.SQLServer.2008.AnalysisServices.Instance
Parent MonitorSystem.Health.ConfigurationState
CategoryConfigurationHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2008.AnalysisServices.MonitorType.Instance.ConfigurationConflictWithSQLServer
RemotableTrue
AccessibilityPublic
Alert Message
SSAS 2008: конфликт конфигурации памяти с SQL Server
Параметр конфигурации TotalMemoryLimit экземпляра SQL Server Analysis Services ({0} ГБ) оставляет {1} ГБ из {2} ГБ для операционной системы и SQL Server, что ниже настроенного порогового значения для формирования предупреждения.
Общий объем памяти сервера: {2} ГБ
Общее использование памяти: {5} ГБ
Память, используемая процессами, не относящимся к SSAS: {4} ГБ
Память, используемая SSAS: {3} ГБ
Нижний предел памяти SSAS: {6} ГБ ({7}\%)
Верхний предел памяти SSAS: {0} ГБ ({8}\%)
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.ConfigurationConflictWithSQLServer" Accessibility="Public" Enabled="true" Target="SQLAS!Microsoft.SQLServer.2008.AnalysisServices.Instance" ParentMonitorID="SystemHealth!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2008.AnalysisServices.MonitorType.Instance.ConfigurationConflictWithSQLServer" ConfirmDelivery="false">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.ConfigurationConflictWithSQLServer.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</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="Warning" MonitorTypeStateID="ConfigurationConflict" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="NoConfigurationConflict" HealthState="Success"/>
</OperationalStates>
<Configuration>
<Threshold>40</Threshold>
<IntervalSeconds>604800</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>