Монитор создает предупреждение, если количество сеансов, которые заблокированы в течение промежутка времени, указанного параметром WaitMinutes, превышает сконфигурированное пороговое значение.
Монитор создает предупреждение, если количество сеансов, заблокированных на время, превышающее значение параметра WaitMinutes, больше чем заданное пороговое значение. Блокировка происходит, когда один сеанс имеет блокировку определенного ресурса и другой сеанс пытается получить конфликтующий тип блокировки того же ресурса. Блокировки неизбежны для любой системы управления базами данных с блокировкой на основе параллелизма. Однако, слишком большое количество блокировок может вызвать проблемы с производительностью, поэтому администратор может использовать этот монитор для того, чтобы быть в курсе, когда количество сеансов, заблокированных на время, превышающее значение параметра WaitMinutes, больше чем заданное пороговое значение.
Блокировка может произойти по многим причинам, которые являются ожидаемыми, а также может иметь место в тех случаях, когда соответствующие функциональные возможности, требуемые приложением, использующим данные, могут быть улучшены без потерь.
Разрешение вопросов, связанных с блокировками, требует знаний о рабочей нагрузке, требованиях и пользователях, которые администратор должен учитывать при принятии решения о правильности направления действий. Решение проблем с блокировками может включать в себя множество действий, включая, но не ограничиваясь следующие:
Настройка параметров конфигурации SSAS для увеличения параллелизма позволяет избежать блокировки из-за состязания за ресурсы. Изменения конфигурации такого рода не должны применяться на производственных базах данных с умеренным или высоким влиянием на бизнес-процессы без предварительного тестирования и полного понимания возможных последствий. Администратор должен тщательно ознакомиться с Руководством по настройке производительности многомерной службы SSAS (глава 3 в целом и, в частности раздел 3.8 о производительности многопользовательских сред) до внесения изменений, сделанных без прямых консультаций и указаний службы поддержки корпорации Майкрософт, так как в противном случае производительность сервера может значительно снизиться, а не повыситься.
Улучшение производительности запросов в целом для запросов, определенных как блокирующие.
Определить блокировки сессии, включая операции по обработке, уменьшить блокировки за счет правильного планирования заданий обработки, настройки запросов и настройки правильной конфигурации времени ожидания.
Проверить эффективность структуры базы данных. Ситуация с длительными блокировками выполнения заданий на сервере может быть улучшена за счет конструктивных изменений или правки конфигурации, чтобы уменьшить степень их блокировки, планирование запуска в течение времени, когда не будет происходить блокировка или добавление дополнительных ресурсов для сервера, после анализа данных счетчиков производительности для определения узких мест производительности, которые приводят в дальнейшем к возникновению длительных блокировок.
Увеличение заданного порогового значения и/или настроенного параметра WaitMinutes, чтобы избежать предупреждения.
Полностью отключите монитор, если состояние блокировки не имеет значения для сервера.
Настройка свойств сервера для служб Analysis Services
Документация TechNet по счетчикам производительности SSAS
Руководство по настройке производительности многомерных служб SSAS
Название | Описание | Значение по умолчанию |
Включено | Включает или отключает поток процесса | Истина |
Создает предупреждения | Определяет, создает ли рабочий процесс предупреждения | Истина |
Интервал (в секундах) | Повторяющийся интервал времени в секундах, по истечении которого запускается рабочий процесс. | 900 |
Число выборок | Состояние работоспособности изменяется, если количество нарушений порогового значения больше или равно минимальному количеству нарушений. | 3 |
Время синхронизации | Время синхронизации указывается в 24-часовом формате и может быть опущено. |
|
Критическое пороговое значение | Состояние работоспособности изменяется, когда количество заблокированных сеансов превышает пороговое значение. | 10 |
Ожидание в минутах | Параметр "Ожидание в минутах" определяет максимальное время ожидания сессии для включения в наблюдение монитором. | 1 |
Target | Microsoft.SQLServer.2014.AnalysisServices.TabularDatabase | ||
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.Database.BlockedSessionsNumber | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2014.AnalysisServices.UnitMonitor.TabularDatabase.BlockedSessionsNumber" Accessibility="Public" Enabled="true" Remotable="true" Priority="Normal" Target="SQLAS!Microsoft.SQLServer.2014.AnalysisServices.TabularDatabase" TypeID="Microsoft.SQLServer.2014.AnalysisServices.MonitorType.Database.BlockedSessionsNumber" ParentMonitorID="SystemHealth!System.Health.PerformanceState" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2014.AnalysisServices.UnitMonitor.TabularDatabase.BlockedSessionsNumber.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='WaitTime']$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='BlockedSPIDCount']$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="Healthy" HealthState="Success"/>
<OperationalState ID="Error" MonitorTypeStateID="Critical" HealthState="Error"/>
</OperationalStates>
<Configuration>
<ServiceName>$Target/Host/Property[Type='SQLAS!Microsoft.SQLServer.2014.AnalysisServices.Instance']/ServiceName$</ServiceName>
<ConnectionString>$Target/Host/Property[Type='SQLAS!Microsoft.SQLServer.2014.AnalysisServices.Instance']/ConnectionString$</ConnectionString>
<DatabaseName>$Target/Property[Type="SQLAS!Microsoft.SQLServer.2014.AnalysisServices.Database"]/DatabaseName$</DatabaseName>
<Threshold>10</Threshold>
<SampleCount>4</SampleCount>
<WaitMinutes>1</WaitMinutes>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>