O monitor alertará se pelo menos uma sessão estiver bloqueada por mais tempo do que o limite configurado.
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.
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.
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:
Ajuste as configurações do SSAS para alterar as prioridades de execução de consultas. As mudanças na configuração dessa natureza não devem ser realizadas nos bancos de dados de produção com impacto alto ou moderado nos negócios sem primeiro testar e compreender totalmente as implicações. O administrador deve examinar totalmente o Guia de Desempenho Multidimensional do SSAS antes de realizar qualquer mudança sem a consulta direta e orientação do Suporte da Microsoft, caso contrário, o desempenho do servidor pode ser afetado adversamente em vez de melhorado.
Identifique as sessões de bloqueio e encerre-as manualmente. Deve ser observado que um problema conhecido com o produto pode bloquear o cancelamento de consultas de longa execução.
Examine o design do banco de dados quanto à eficiência, novamente, com base nas valiosas práticas recomendadas sugeridas no Guia de Desempenho Multidimensional do SSAS. Trabalhos de bloqueio de execução longa em um servidor podem ser melhorados através de mudanças no design ou na configuração para reduzir o grau de bloqueio, programado por um tempo quando o bloqueio não ocorrerá tão severamente, ou recursos adicionais podem ser adicionados ao servidor conforme determinado necessário através de uma análise dos contadores de desempenho para determinar se ocorrem reduções de desempenho, que podem levar a cenários de bloqueio mais longo.
Aumente o limite configurado para evitar o alerta.
Desabilite totalmente o monitor se o bloqueio não for um problema no servidor.
Configurar propriedades do servidor no Analysis Services
Documentação TechNet para os Contadores de Desempenho do SSAS
Guia de Desempenho Multidimensional do SSAS
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 |
Target | Microsoft.SQLServer.2016.AnalysisServices.MultidimensionalDatabase | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2016.AnalysisServices.MonitorType.Database.BlockingDuration | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<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>