Монитор создает предупреждение, если имеется процесс ядра реляционной базы данных SQL Server, запущенный на сервере и параметр TotalMemoryLimit для экземпляра SSAS превышает указанное пороговое значение, для того, чтобы убедиться, что для процесса SQL Server имеется достаточно памяти.
Параметр TotalMemoryLimit конфигурации служб Analysis Services SQL Server должен быть настроен соответствующим образом, чтобы обеспечить распределение памяти для других процессов на компьютере.
Ядро сервера SQL реляционных баз данных, в частности, является основным примером общего процесса, который может потреблять ресурсы памяти на компьютере, на котором также работает SSAS, и это обстоятельство может привести к конкуренции за физическую память со стороны обеих тяжелых потребителей одного и того же фиксированного ресурса. Этот факт требует, чтобы обе службы базы данных были настроены таким образом, предоставляя друг другу достаточно физической памяти, чтобы каждая из них могла выполнять необходимые функции. Если параметр TotalMemoryLimit конфигурации SSAS имеет слишком высокое значение, то SSAS может занимать чрезмерное количество память, что приведет к истощению физической памяти из-за конкуренции с реляционной базой данных (или другим процессом с высоким потреблением памяти). Параметр TotalMemoryLimit должен иметь достаточно низкое значение, чтобы предоставлять процессу SQL Server настроенный объем памяти для использования, а также запас для операционной системы и других типичных процессов с использованием памяти, которые необходимы на компьютере.
При возникновении конфликтов конфигурации памяти, ресурсы и потребности пользователей и других процессов должны быть проанализированы администратором, а затем должна быть произведена необходимая корректировка настроек всех соответствующих процессов. Наиболее распространенным сценарии для решения этого типа проблем на сервере баз данных Microsoft возникают из экземпляра (ов) SSAS и компонента ядра реляционной базы данных SQL. К счастью, обе службы обладают функциями настройки конфигурации, которые могут быть скорректированы по мере необходимости. Нет универсального верного значения параметра TotalMemoryLimit для SSAS или параметра максимального предела памяти для реляционной базы данных SQL, поэтому пороговое значения для этого предупреждения может быть скорректировано администратором с учетом каждой конкретной среды. При возникновении состояние может быть разрешено с помощью любого из многих возможных подходов:
Настроить параметр "Макс. лимит памяти" для экземпляра(ов) SQL Server, чтобы уменьшить потребление этим процессом(-ами).
Уменьшить параметр конфигурации TotalMemoryLimit экземпляра(ов) SSAS, чтобы уменьшить потребление этим процессом(-ами).
Увеличить объем доступной памяти на сервере.
Настроить пороговое значение для предупреждения.
Отключить предупреждения, для случаев, где оно будет установлено администратором ненужным.
Документация TechNet по свойствам памяти служб Analysis Services
Настройка свойств сервера для служб Analysis Services
Руководство по настройке производительности многомерных служб SSAS
Название | Описание | Значение по умолчанию |
Включено | Включает или отключает поток процесса | Истина |
Создает предупреждения | Определяет, создает ли рабочий процесс предупреждения | Истина |
Интервал (в секундах) | Повторяющийся интервал времени в секундах, по истечении которого запускается рабочий процесс. | 604800 |
Время синхронизации | Время синхронизации указывается в 24-часовом формате и может быть опущено. |
|
Пороговое значение предупреждения (в %) | Состояние работоспособности изменяется, если имеется процесс ядра реляционной базы данных SQL Server, запущенный на сервере и параметр TotalMemoryLimit для экземпляра SSAS превышает пороговое значение. | 40 |
Target | Microsoft.SQLServer.2008.AnalysisServices.Instance | ||
Parent Monitor | System.Health.ConfigurationState | ||
Category | ConfigurationHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2008.AnalysisServices.MonitorType.Instance.ConfigurationConflictWithSQLServer | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<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>