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

Microsoft.SQLServer.2014.AnalysisServices.UnitMonitor.Instance.MemoryUsageByOtherProcess (UnitMonitor)

Монитор отслеживает использование памяти сервера процессами, не относящимися к Analysis Services, чтобы быть уверенным в постоянном наличии объема, указанного в TotalMemoryLimit для служб Analysis Services.

Knowledge Base article:

Сводка

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

Причины

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

Диспетчер задач можно использовать для проверки использования памяти различными процессами на сервере. На вкладке Процессы в Windows Server 2008 R2, а также на вкладке Детали в Windows Server 2014 процессы можно отсортировать по столбцу Память и найти процессы, потребляющие наибольшее количество памяти в системе. Если экземпляр (ы) SSAS (msmdsrv.exe) или компонент ядра SQL Server реляционной базы данных (sqlservr.exe) потребляют чрезмерное количество памяти, то это единственный простой способ быстрого определения ее использования, и, конечно, это также можно заметить, если другие процессы в системе могут вносить свой вклад. Впоследствии, корректирующие действия (такие, как настройка использования памяти администратором SQL, добавление оборудования, уменьшение или разделение нагрузки на компьютере) могут быть разработаны соответствующим образом.

Решения

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

Внешнее

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

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

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

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

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

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

Название

Описание

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

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

Состояние работоспособности изменяется на "критическое", если значение "Свободное незарезервированное " (в %) ниже порогового значения.

5

Включено

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

Истина

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

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

Истина

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

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

900

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

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

4

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

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

 

Element properties:

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

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2014.AnalysisServices.UnitMonitor.Instance.MemoryUsageByOtherProcess" Accessibility="Public" Enabled="true" Target="SQLAS!Microsoft.SQLServer.2014.AnalysisServices.Instance" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2014.AnalysisServices.MonitorType.Instance.MemoryUsageByOtherProcessPercent" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2014.AnalysisServices.UnitMonitor.Instance.MemoryUsageByOtherProcess.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="Below" HealthState="Error"/>
<OperationalState ID="Warning" MonitorTypeStateID="Between" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="Above" HealthState="Success"/>
</OperationalStates>
<Configuration>
<WarningThreshold>10</WarningThreshold>
<CriticalThreshold>5</CriticalThreshold>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>