Монитор отслеживает использование памяти сервера процессами, не относящимися к Analysis Services, чтобы быть уверенным в постоянном наличии объема, указанного в TotalMemoryLimit для служб Analysis Services.
Использование памяти на сервере, на котором размещен экземпляр 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, добавление оборудования, уменьшение или разделение нагрузки на компьютере) могут быть разработаны соответствующим образом.
Устранение неполадок общей загрузки сервера требуют от администраторов понимания и учета множества факторов, включая, но не ограничиваясь требования к рабочей нагрузке, пользователям и расписанию заданий, других запланированных процессов на сервере, и имеющихся ресурсов. Действия для устранения чрезмерного объема распределения памяти на компьютере сервера может включать в себя любое из следующих действий:
Увеличение доступной физической памяти на сервере.
Снижение потребления экземплярами SSAS или реляционными базами данных путем внесения изменений после изучения Руководства по настройке производительности многомерной службы SSAS или обращения в службу поддержки корпорации Майкрософт.
Снижение потребления другими процессами с помощью средств, специфических для каждого процесса или путем остановки процессов, которые не требуются на сервере.
Планирование заданий или отчетов затронутого экземпляра(ов), чтобы избежать одновременной нагрузки таким образом, что память сервера будет чрезмерно распределена.
Настройте пороговые значения для оповещения, чтобы избежать этого состояния.
Полностью отключите монитор, если использование памяти не имеет значения для сервера.
Конфигурация памяти и критерии размеров в SQL Server 2014
Документация TechNet по свойствам памяти служб Analysis Services
Настройка свойств сервера для служб Analysis Services
Документация TechNet по счетчикам производительности SSAS
Руководство по настройке производительности многомерных служб SSAS
Название | Описание | Значение по умолчанию |
Критическое пороговое значение (в %) | Состояние работоспособности изменяется на "критическое", если значение "Свободное незарезервированное " (в %) ниже порогового значения. | 5 |
Включено | Включает или отключает поток процесса | Истина |
Создает предупреждения | Определяет, создает ли рабочий процесс предупреждения | Истина |
Интервал (в секундах) | Повторяющийся интервал времени в секундах, по истечении которого запускается рабочий процесс. | 900 |
Время синхронизации | Время синхронизации указывается в 24-часовом формате и может быть опущено. | 4 |
Пороговое значение предупреждения (в %) | Состояние работоспособности изменяется на "предупреждение", если значение "Свободное незарезервированное (в %)" становится ниже порогового значения, но все еще больше критического порогового значения (в %). |
|
Target | Microsoft.SQLServer.2014.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.2014.AnalysisServices.MonitorType.Instance.MemoryUsageByOtherProcessPercent | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<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>