Монитор отслеживает использование памяти сервера процессами, не относящимися к Analysis Services, чтобы службам Analysis Services всегда был доступен объем памяти, указываемый в параметре "Общий предел памяти".
Использование памяти на сервере, где размещен экземпляр SSAS, может повлиять на работоспособность и производительность сервера из-за конкуренции за общие ресурсы, которые экземпляр также должен распределять. Это может привести к нехватке физической памяти на компьютере, что может заставить операционную систему использовать виртуальную память в файле подкачки на диске, которая работает во много раз медленнее физической памяти. Для любых критически важных для бизнеса приложений, зависящих от экземпляра SSAS, сервер следует настроить так, чтобы другие процессы (например, антивирусы, дефрагментация диска, другие экземпляры SSAS или ядро реляционной базы данных SQL Server и т. д.) не распределяли слишком большой объем памяти, что приводило бы к вышеописанной ситуации.
К наиболее распространенным процессам, которые активно конкурируют с экземплярами SSAS за использование памяти, в первую очередь относятся: другие экземпляры SSAS, компоненты ядра реляционной СУБД SQL Server и другие серверы баз данных, поскольку они имеют тенденцию к наиболее интенсивному использованию памяти на серверах, где также размещены экземпляры SSAS. Иногда программное обеспечение, не связанное с базами данных, также может использовать большие объемы памяти. Таким образом, соображения по использованию памяти часто влияют на конфигурацию сервера.
Кроме того, значение свободной незарезервированной памяти (параметр FreeUnreservedPercent) может стать отрицательным. Этот параметр вычисляется следующим образом: 100 % общего объема памяти минус высокий уровень использования памяти экземпляром (SSAS) и минус использование памяти другими процессами. Причины могут заключаться в следующем:
Параметр "Общий предел памяти" в файле конфигурации задан некорректно.
Общая память, используемая другими процессами, и предварительное установленное ограничение для SSAS превышают 100 %.
С помощью диспетчера задач можно исследовать использование памяти различными процессами на сервере. На вкладке "Процессы" в Windows Server 2008 R2 и на вкладке "Подробности" в Windows Server 2008 можно упорядочить процессы по столбцу "Память", чтобы найти процессы, использующие наибольшее количество памяти. Если экземпляры SSAS (msmdsrv.exe) или ядра реляционной СУБД SQL Server (sqlservr.exe) используют слишком много памяти, вы найдете их в этом списке и также сможете посмотреть, вносят ли свой вклад в потребление памяти другие процессы. Затем можно предпринять необходимые корректирующие действия (например, настроить использование памяти экземплярами SQL (это делает администратор SQL), установить дополнительное оборудование либо уменьшить или разделить рабочую нагрузку на компьютере).
Для решения проблем с общей загрузкой сервера администраторы должны понимать и учитывать множество факторов, в том числе требования к рабочей нагрузке, пользователей и расписание заданий, другие запланированные процессы на сервере и имеющиеся ресурсы. Действия по устранению чрезмерного выделения памяти на компьютере сервера могут включать любое из перечисленных ниже действий:
Увеличение доступной физической памяти на сервере.
Сократите использование ресурсов экземплярами SSAS или реляционных баз данных, изучив "Руководство по настройке производительности многомерной службы SSAS" или обратившись в службу поддержки корпорации Майкрософт и внеся необходимые изменения в архитектуру.
Сократите использование ресурсов другими процессами с помощью средств, специфических для каждого процесса, либо завершив ненужные процессы на сервере.
Планируйте задания или отчеты для затронутых экземпляров, чтобы избежать одновременных рабочих нагрузок во время чрезмерного выделения памяти сервера.
Настройте пороговые значения для оповещения, чтобы избежать этого состояния.
Полностью отключите монитор, если использование памяти не имеет значения для сервера.
Документация TechNet по свойствам памяти служб Analysis Services
Настройка свойств сервера в службах Analysis Services
Руководство по настройке производительности многомерных служб SSAS
Название | Описание | Значение по умолчанию |
Критическое пороговое значение (в %) | Состояние работоспособности изменяется на "Критическое", если значение "Свободное незарезервированное (%)" становится ниже порогового значения. | 5 |
Включено | Включает или отключает поток процесса | Да |
Создает предупреждения | Определяет, создает ли рабочий процесс предупреждения | Да |
Интервал (в секундах) | Повторяющийся интервал времени в секундах, по истечении которого запускается рабочий процесс. | 900 |
Число выборок | Состояние работоспособности изменяется, если количество нарушений порогового значения больше или равно минимальному количеству нарушений. | 4 |
Время синхронизации | Время синхронизации указывается в 24-часовом формате и может быть опущено. |
|
Время ожидания (секунды) | Определяет время, в течение которого возможно выполнение рабочего процесса перед закрытием и пометкой как сбойный. | 300 |
Пороговое значение предупреждения (%) | Состояние работоспособности изменяется на "Предупреждение", если значение счетчика "Свободное незарезервированное (%)" опускается ниже порогового значения, но все еще выше критического порогового значения (в %). | 10 |
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.MemoryUsageByOtherProcessPercent | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Instance.MemoryUsageByOtherProcess" 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.MemoryUsageByOtherProcessPercent" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.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/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>