Монитор создает предупреждение, если количество сеансов, которые заблокированы в течение промежутка времени, указанного параметром WaitMinutes, превышает настроенное пороговое значение.
Монитор создает предупреждение, если количество сеансов, заблокированных на время, превышающее значение параметра WaitMinutes, оказывается больше заданного порогового значения. Блокировка возникает, если один сеанс удерживает блокировку конкретного ресурса, а второй сеанс пытается получить блокировку конфликтующего типа для того же ресурса. Блокировка является неизбежной отличительной чертой любой системы управления базами данных с параллелизмом на основе блокировок. Однако слишком большое количество блокировок может вызвать снижение производительности, поэтому с помощью этого монитора администратор может определить, когда это состояние продолжается дольше периода, заданного параметром WaitMinutes, для количества сеансов, превышающего настроенное пороговое значение.
Блокировка может произойти по многим причинам, которые являются ожидаемыми, а также может иметь место в тех случаях, когда соответствующие функциональные возможности, необходимые использующему данные приложению, могут быть улучшены без потерь.
Для решения проблем, связанных с блокировками, необходимы знания о рабочей нагрузке, требованиях и пользователях, которые администратор должен учитывать при выборе направления действий. Решение проблем с блокировками может включать в себя несколько действий, в том числе следующие:
Измените параметры конфигурации SSAS для увеличения параллелизма, чтобы избежать блокировки из-за состязания за ресурсы. Такие изменения конфигурации не следует выполнять для рабочих баз данных с умеренным или высоким влиянием на бизнес-процессы без предварительного тестирования и полного понимания возможных последствий. Перед внесением изменений без прямых указаний службы поддержки корпорации Майкрософт администратор должен тщательно ознакомиться с руководством по настройке производительности многомерной службы SSAS (глава 3 в целом и, в частности, раздел 3.8 о производительности многопользовательских сред), так как в противном случае производительность сервера может значительно снизиться.
Улучшение производительности запросов в целом для запросов, определенных как блокирующие.
Определить блокировки сессии, включая операции по обработке, уменьшить блокировки за счет правильного планирования заданий обработки, настройки запросов и настройки правильной конфигурации времени ожидания.
Проверьте эффективность архитектуры базы данных. Ситуацию с длительными блокировками выполнения заданий на сервере можно улучшить путем изменения архитектуры или конфигурации. Например, чтобы сгладить негативные последствия от блокировки заданий, задания можно запланировать на время, когда их блокировка не приведет к таким серьезным последствиям. Также можно добавить на сервер дополнительные ресурсы, проанализировав счетчики производительности для определения узких мест, которые в дальнейшем приводят к возникновению длительных блокировок.
Увеличьте заданное пороговое значение и/или значение параметра WaitMinutes, чтобы избежать предупреждения.
Полностью отключите монитор, если состояние блокировки не имеет значения для сервера.
Настройка свойств сервера для служб Analysis Services
Документация TechNet по счетчикам производительности SSAS
Руководство по настройке производительности многомерных служб SSAS
Название | Описание | Значение по умолчанию |
Включено | Включает или отключает поток процесса | Да |
Создает предупреждения | Определяет, создает ли рабочий процесс предупреждения | Да |
Интервал (в секундах) | Повторяющийся интервал времени в секундах, по истечении которого запускается рабочий процесс. | 900 |
Число выборок | Состояние работоспособности изменяется, если количество нарушений порогового значения больше или равно минимальному количеству нарушений. | 4 |
Время синхронизации | Время синхронизации указывается в 24-часовом формате и может быть опущено. |
|
Критическое пороговое значение | Состояние работоспособности изменяется, когда количество заблокированных сеансов превышает пороговое значение. | 10 |
Время ожидания (в секундах) | Определяет время, в течение которого возможно выполнение рабочего процесса перед закрытием и пометкой как сбойный. | 300 |
Ожидание в минутах | Параметр "Ожидание в минутах" определяет максимальное время ожидания включения мониторинга для сеанса. | 1 |
Target | Microsoft.SQLServer.2014.AnalysisServices.MultidimensionalDatabase | ||
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.MultidimensionalDatabase.BlockedSessionsNumber" Accessibility="Public" Enabled="true" Remotable="true" Priority="Normal" Target="SQLAS!Microsoft.SQLServer.2014.AnalysisServices.MultidimensionalDatabase" 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.Database.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/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>