O monitor alertará quando o número de sessões que estão bloqueadas por mais tempo do que a configuração WaitMinutes definida exceder o limite configurado.
O monitor alertará se o número de sessões bloqueadas por mais tempo do que a configuração WaitMinutes definida exceder 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 em que ele pode ser amenizado sem perda de funcionalidade correspondente necessária pelo aplicativo que está 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 aumentar o paralelismo para evitar o bloqueio devido à contenção do recurso. 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 (Capítulo 3 em geral e especificamente a Seção 3.8 sobre as considerações de desempenho de vários usuários) antes de realizar qualquer mudança sem consulta e orientação diretas do Suporte da Microsoft, caso contrário, o desempenho do servidor pode ser afetado adversamente em vez de melhorado.
Melhore o desempenho da consulta em geral para consultas identificadas como bloqueadas.
Identifique a sessão de bloqueio incluindo a operação de processamento, reduza o bloqueio através do agendamento adequado de trabalhos de processamento, ajuste de consultas e definição da configuração de tempo limite adequado.
Examine o design do banco de dados quanto à eficiência. Trabalhos de bloqueio de execução longa em um servidor podem ser melhorados através de mudanças no design ou na configuração. Portanto, para reduzir sua severidade de bloqueio, os trabalhos podem ser programados por um tempo, quando o bloqueio não ocorrerá tão severamente. Recursos adicionais também poderão ser adicionados ao servidor se a análise dos contadores de desempenho notar a presença de gargalos que podem levar a cenários de bloqueio mais longo.
Aumente o limite configurado e/ou a definição WaitMinutes configurada 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
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 |
Número de amostras | O Estado da Integridade mudará se o número de violações do limite for maior ou igual ao Número Mínimo de Violações. | 4 |
Hora da Sincronização | A hora da sincronização especificada usando um formato de 24 horas. Pode ser omitido. |
|
Limite Crítico | O Estado da Integridade mudará quando o número de sessões bloqueadas exceder o limite. | 10 |
Tempo Limite (segundos) | Especifica o tempo que o fluxo de trabalho pode funcionar antes de ser fechado e marcado como com falha. | 300 |
Minutos de espera | O parâmetro Minutos de Espera define o tempo de espera mínimo para a sessão ser considerada pelo monitor. | 1 |
Target | Microsoft.SQLServer.2008.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.2008.AnalysisServices.MonitorType.Database.BlockedSessionsNumber | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.MultidimensionalDatabase.BlockedSessionsNumber" Accessibility="Public" Enabled="true" Remotable="true" Priority="Normal" Target="SQLAS!Microsoft.SQLServer.2008.AnalysisServices.MultidimensionalDatabase" TypeID="Microsoft.SQLServer.2008.AnalysisServices.MonitorType.Database.BlockedSessionsNumber" ParentMonitorID="SystemHealth!System.Health.PerformanceState" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.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.2008.AnalysisServices.Instance']/ServiceName$</ServiceName>
<ConnectionString>$Target/Host/Property[Type='SQLAS!Microsoft.SQLServer.2008.AnalysisServices.Instance']/ConnectionString$</ConnectionString>
<DatabaseName>$Target/Property[Type="SQLAS!Microsoft.SQLServer.2008.AnalysisServices.Database"]/DatabaseName$</DatabaseName>
<Threshold>10</Threshold>
<SampleCount>4</SampleCount>
<WaitMinutes>1</WaitMinutes>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>