Конфигурация параметра "Общий предел памяти"

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

Монитор создает предупреждение, если параметр "Общий предел памяти" для экземпляра SSAS превышает сконфигурированное значение. При этом риску распределения подвергается физическая память, необходимая операционной системе для выполнения базовых функций (не менее 2 ГБ).

Knowledge Base article:

Сводка

Монитор создает предупреждение, если значение параметра "Общий предел памяти" для экземпляра SSAS превышает заданное пороговое значение, что может привести к недостатку физической памяти, необходимой для выполнения базовых функций операционной системы. Кроме того, конфигурация не учитывает потенциальное использование памяти другими процессами, не связанными с отслеживаемым экземпляром. Это использование также следует учитывать при настройке параметра "Общий предел памяти" после тщательного изучения Руководства по настройке производительности многомерных служб SSAS.

Причины

Значение параметра "Общий предел памяти" должно быть таким, чтобы операционная система получила достаточный объем памяти для выполнения основных необходимых функций управления памятью, а также для взаимодействия с драйверами и устройствами. Если ОС не хватает доступной памяти для этих основных функций, это может привести к нестабильности или сбою системы. Таким образом, значение должно быть несколько ниже 100 %, чтобы гарантировать достаточный объем физической памяти для выполнения этих функций. Если установлено слишком большое значение, монитор будет создавать предупреждения, информируя пользователя об этом состоянии.

По умолчанию значение параметра "Общий предел памяти" для SSAS равно 80, что составляет 80 % от физической памяти, доступной на сервере. Если имеются другие крупные потребители памяти (например, ядро реляционной СУБД SQL Server), следует принимать их во внимание и соответственно уменьшать значения параметров, отвечающих за ограничения памяти. Если задано слишком высокое значение параметра, ОС может столкнуться с нехваткой физической памяти, что может привести к чрезмерному использованию диска для файла подкачки и к снижению производительности сервера.

Если требуется определенное количество байтов, любое значение больше чем 100 интерпретируется как число байтов в физической памяти.

Примечание. В отличие от ядра реляционной СУБД SQL Server, которое поддерживает жесткое максимальное ограничение памяти, параметр ядра SSAS "Общий предел памяти" работает несколько иначе. Он задает предельное значение объема памяти, при котором сервер начнет агрессивно пытаться очистить память как можно быстрее. Аналогично параметр "Нижняя граница объема памяти" задает предельное значение, при котором сервер начнет пытаться очистить память из кэша SSAS "лениво", пытаясь снизить влияние любых уже существующих сеансов или выполняющихся запросов. При достижении Общего ограничения памяти может пострадать производительность сервера, так как сервер будет очень агрессивно очищать память из кэша. Сервер также поддерживает параметр "Твердый лимит памяти". Это объем памяти, по достижению которого сервер начнет произвольно прекращать сеансы, чтобы попытаться освободить память. Это может привести к сбоям для некоторых пользователей, и именно поэтому параметр "Общий предел памяти" не применяется в качестве жесткого предела, так как некоторые запросы или задания могут по своей природе использовать большие объемы памяти, и модуль OLAP будет делать все возможное, чтобы обслужить их в рамках ограничений, на которые он настроен.

Решения

Это состояние можно исправить одним из следующих действий:

Внешнее

Рекомендации по настройке и выбору размера памяти в SQL Server 2008

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

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

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

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

Название

Описание

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

Включено

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

Да

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

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

Да

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

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

604800

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

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

 

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

Монитор создает предупреждение, если параметр "Общий предел памяти" для экземпляра SSAS превышает сконфигурированное значение. При этом риску распределения подвергается физическая память, необходимая операционной системе для выполнения базовых функций (не менее 2 ГБ).

2

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

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

300

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.TotalMemoryConfiguration
RemotableTrue
AccessibilityPublic
Alert Message
SSAS 2008: неправильная конфигурация параметра "Общий предел памяти"
Параметр конфигурации "Общий предел памяти" для экземпляра SQL Server Analysis Services ({0} ГБ) превышает пороговое значение, необходимое для функционирования операционной системы, что может привести к нестабильности или отказу системы.
Общий объем памяти сервера: {2} ГБ
Общее использование памяти: {5} ГБ
Память, используемая процессами, не относящимися к SSAS: {4} ГБ
Память, используемая SSAS: {3} ГБ
Нижний предел памяти SSAS: {6} ГБ ({7}\%)
Верхний предел памяти SSAS: {0} ГБ ({8}\%)
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.TotalMemoryConfiguration" 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.TotalMemoryConfiguration" ConfirmDelivery="false">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.TotalMemoryConfiguration.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="NotConfigured" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="Configured" HealthState="Success"/>
</OperationalStates>
<Configuration>
<Threshold>2</Threshold>
<IntervalSeconds>604800</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>