Монитор создает предупреждение, когда выделение памяти экземпляром SSAS превосходит значение параметра WarningThreshold, выраженного в процентном соотношении параметра TotalMemoryLimit для экземпляра SSAS. Монитор создает критическое предупреждение, когда выделение памяти превосходит значение критического порогового значения.
Монитор создает предупреждение, когда выделение памяти экземпляром SSAS превосходит значение параметра WarningThreshold, выраженного в процентном соотношении параметра TotalMemoryLimit для экземпляра SSAS. Монитор создает критическое предупреждение, когда выделение памяти превосходит значение критического порогового значения.
При некоторых обстоятельствах SSAS может приближаться к или превышать значение параметра TotalMemoryLimit. В некоторых случаях, отдельная операция потребует памяти за пределами этого предела, и, несмотря на все усилия сервера, чтобы очистить память от других, менее критичных задач, распределения могут иногда превышать настроенные ограничения, либо операции должны быть принудительно завершены с ошибкой.
Это может произойти при обработке больших объемов или данных фактов, особенно, если существуют атрибуты с типами данных, занимающие большие объемы (например, длинные строки, двоичные данные и т. д.), или если измерение содержит многочисленные члены. Кроме того, выполняемые на сервере запросы могут охватывать очень большие объемы данных, особенно в случае перекрестного объединения нескольких измерений, или требовать значительных расчетов для получения результатов для клеток не агрегированных ранее по решению администратора, или которые просто невозможно агрегировать заранее.
Когда пределы памяти для сервера превышены, существует множество подходов, которые могут использовать администраторы для устранения этой проблемы. После рассмотрения основной деятельности, которая вызывает использование памяти, требований к нагрузке на сервер, имеющихся ресурсов и других факторов, а также подробного рассмотрения и принятия во внимание Руководства по настройке производительности многомерных служб SSAS, либо консультаций со службой технической поддержки Майкрософт, при необходимости, могут быть предпринятые любые из перечисленных ниже подходы для решения проблемы:
Определите сеанс(ы), ответственные за наиболее значимые распределения памяти, и вручную их отмените.
Определите сеанс(ы), ответственные за наиболее значимые распределения памяти, и разрешите их индивидуально, чтобы перенести задания обработки или отчеты, предварительно выделить из кэша запросов во время низкой загрузки или разработать определенные агрегирования заранее, чтобы построить во время обработки, и, следовательно, снизить потребление памяти для пользовательских запросов впоследствии.
Увеличите объем физической памяти на компьютере.
Уменьшите потребление памяти другими процессами на компьютере, например, экземплярами реляционной базы данных SQL Server или другими экземплярами SSAS.
Увеличьте значение параметра TotalMemoryLimit или настроенных пороговых значений предупреждения, чтобы избежать этого состояния.
Полностью отключите монитор, если использование памяти не имеет значения для сервера.
Документация TechNet по свойствам памяти служб Analysis Services
Настройка свойств сервера в службах Analysis Services
Руководство по настройке производительности многомерных служб SSAS
Название | Описание | Значение по умолчанию |
Критическое пороговое значение (в %) | Состояние работоспособности изменяется на "критическое", если использование памяти (в %) службами Analysis Services превышает пороговое значение. | 95 |
Включено | Включает или отключает поток процесса | Истина |
Создает предупреждения | Определяет, создает ли рабочий процесс предупреждения | Истина |
Интервал (в секундах) | Повторяющийся интервал времени в секундах, по истечении которого запускается рабочий процесс. | 900 |
Время синхронизации | Время синхронизации указывается в 24-часовом формате и может быть опущено. |
|
Пороговое значение предупреждения (в %) | Состояние работоспособности изменяется на "предупреждение", если использование памяти (в %) службами Analysis Services превышает пороговое значение, но все еще меньше критического порогового значения (в %). | 80 |
Target | Microsoft.SQLServer.2008.AnalysisServices.Instance | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2008.AnalysisServices.MonitorType.Instance.MemoryUsagePercent | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.MemoryUsage" Accessibility="Public" Enabled="true" Target="SQLAS!Microsoft.SQLServer.2008.AnalysisServices.Instance" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2008.AnalysisServices.MonitorType.Instance.MemoryUsagePercent" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.MemoryUsage.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</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="Error" MonitorTypeStateID="Above" HealthState="Error"/>
<OperationalState ID="Warning" MonitorTypeStateID="Between" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="Below" HealthState="Success"/>
</OperationalStates>
<Configuration>
<WarningThreshold>80</WarningThreshold>
<CriticalThreshold>95</CriticalThreshold>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>