Duração do Bloqueio

Microsoft.SQLServer.2016.AnalysisServices.UnitMonitor.MultidimensionalDatabase.BlockingDuration (UnitMonitor)

O monitor alertará se pelo menos uma sessão estiver bloqueada por mais tempo do que o limite configurado.

Knowledge Base article:

Resumo

O monitor alertará quando pelo menos uma sessão estiver bloqueada por mais tempo do que o limite configurado. O bloqueio ocorre quando uma sessão mantém um bloqueio em um recurso específico e outra sessão tenta obter um tipo de bloqueio conflitante no mesmo recurso. O bloqueio é uma característica inevitável de qualquer sistema de gerenciamento de banco de dados com simultaneidade baseada em bloqueio. No entanto, um alto nível de bloqueio pode ocasionar problemas de desempenho, portanto, um administrador pode usar esse monitor para saber quando essa condição ocorrer por mais tempo do que o WaitMinutes definido para um número de sessões maior do que o limite configurado.

Causas

O bloqueio pode ocorrer por vários motivos que são esperados, mas também pode ocorrer em cenários onde pode ser amenizados sem qualquer perda de funcionalidade correspondente necessária pelo aplicativo consumindo dados.

Resoluções

A resolução de problemas de bloqueio em um servidor exige o conhecimento da carga de trabalho, dos requisitos e dos usuários, que um administrador deve considerar ao decidir sobre o curso correto para correção. A solução de problemas de bloqueio pode incluir várias possíveis ações, incluindo, mas não se limitando, ao seguinte:

Externo

Configurar propriedades do servidor no Analysis Services

Documentação TechNet para os Contadores de Desempenho do SSAS

Guia de Desempenho Multidimensional do SSAS

CORRIGIR: leva mais tempo do que o esperado para cancelar uma consulta MDX que contém muitas cláusulas AGRUPAR POR no SSAS 2016

Parâmetros Substituíveis

Nome

Descrição

Valor padrão

Habilitado

Habilita ou desabilita o fluxo de trabalho

Sim

Gerar Alertas

Define se o fluxo de trabalho gera um Alerta

Sim

Intervalo em Segundos

O intervalo de tempo recorrente em segundos no qual executa-se o fluxo de trabalho.

900

Hora da Sincronização

A hora da sincronização especificada usando um formato de 24 horas. Pode ser omitido.

 

Limite de Aviso (min)

O Estado da Integridade mudará se pelo menos uma sessão estiver bloqueada por mais tempo do que o limite.

1

Tempo limite (segundos)

Especifica o tempo que o fluxo de trabalho pode funcionar antes de ser fechado e marcado como com falha.

300

Element properties:

TargetMicrosoft.SQLServer.2016.AnalysisServices.MultidimensionalDatabase
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2016.AnalysisServices.MonitorType.Database.BlockingDuration
RemotableTrue
AccessibilityPublic
Alert Message
SSAS 2016: pelo menos uma sessão foi bloqueada por um longo período de tempo.
A duração da sessão do SSAS bloqueada mais longa excedeu {0} minutos, que é mais longo do que o limite configurado para o alerta.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2016.AnalysisServices.UnitMonitor.MultidimensionalDatabase.BlockingDuration" Accessibility="Public" Enabled="true" Remotable="true" Priority="Normal" Target="SQLAS!Microsoft.SQLServer.2016.AnalysisServices.MultidimensionalDatabase" TypeID="Microsoft.SQLServer.2016.AnalysisServices.MonitorType.Database.BlockingDuration" ParentMonitorID="SystemHealth!System.Health.PerformanceState" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2016.AnalysisServices.UnitMonitor.Database.BlockingDuration.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='WaitTime']$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="Healthy" HealthState="Success"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<ServiceName>$Target/Host/Property[Type='SQLAS!Microsoft.SQLServer.2016.AnalysisServices.Instance']/ServiceName$</ServiceName>
<ConnectionString>$Target/Host/Property[Type='SQLAS!Microsoft.SQLServer.2016.AnalysisServices.Instance']/ConnectionString$</ConnectionString>
<DatabaseName>$Target/Property[Type="SQLAS!Microsoft.SQLServer.2016.AnalysisServices.Database"]/DatabaseName$</DatabaseName>
<Threshold>1</Threshold>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>