Использование памяти

Microsoft.SQLServer.2016.AnalysisServices.UnitMonitor.Instance.MemoryUsage (UnitMonitor)

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

Knowledge Base article:

Сводка

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

Причины

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

Это может произойти при обработке больших измерений или данных фактов, особенно если существуют атрибуты с типами данных большого объема (например, длинные строки, двоичные данные и т. д.) или если в измерении содержится большое число членов. Кроме того, выполняемые на сервере запросы могут охватывать очень большие объемы данных, особенно в случае перекрестного объединения нескольких измерений, или требовать значительных расчетов для получения результатов для ячеек, которые не были или не могли быть агрегированы заранее.

Решения

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

Внешнее

Конфигурация памяти и критерии размеров в SQL Server 2016

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

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

Документация TechNet по счетчикам производительности SSAS

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

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

Название

Описание

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

Критическое пороговое значение (в %)

Состояние работоспособности изменяется на "Критическое", если использование памяти (в %) службами Analysis Services превышает пороговое значение.

95

Включено

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

Да

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

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

Да

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

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

900

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

Состояние работоспособности изменяется, если количество нарушений порогового значения больше или равно минимальному количеству нарушений.

4

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

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

 

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

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

300

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

Состояние работоспособности изменяется на "Предупреждение", если использование памяти службами Analysis Services (в %) превышает пороговое значение, но все еще меньше критического порогового значения (в %).

80

Element properties:

TargetMicrosoft.SQLServer.2016.AnalysisServices.Instance
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2016.AnalysisServices.MonitorType.Instance.MemoryUsagePercent
RemotableTrue
AccessibilityPublic
Alert Message
SSAS 2016: высокий уровень использования памяти
Текущее использование памяти для SSAS ({3} ГБ) превосходит сконфигурированное пороговое значение, выраженное в процентном соотношении от параметра "Общий предел памяти" для экземпляра.
Общий объем памяти сервера: {2} ГБ
Общее использование памяти: {5} ГБ
Память, используемая процессами, не относящимися к SSAS: {4} ГБ
Память, используемая SSAS: {3} ГБ
Нижний предел памяти SSAS: {6} ГБ ({7} \%)
Верхний предел памяти SSAS: {0} ГБ ({8} \%)
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2016.AnalysisServices.UnitMonitor.Instance.MemoryUsage" Accessibility="Public" Enabled="true" Target="SQLAS!Microsoft.SQLServer.2016.AnalysisServices.Instance" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2016.AnalysisServices.MonitorType.Instance.MemoryUsagePercent" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2016.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="Critical" HealthState="Error"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="Success" HealthState="Success"/>
</OperationalStates>
<Configuration>
<CriticalThreshold>95</CriticalThreshold>
<WarningThreshold>80</WarningThreshold>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>