El monitor genera una alerta si la duración del bloqueo de al menos una sesión supera el umbral configurado.
Si al menos una sesión está bloqueada durante más tiempo que el definido en el umbral configurado, el monitor genera una alerta. El bloqueo se produce cuando una sesión mantiene bloqueado un recurso específico y una segunda sesión intenta adquirir un tipo de bloqueo en conflicto en el mismo recurso. El bloqueo es una característica inevitable de cualquier sistema de administración de bases de datos con simultaneidad basada en bloqueo. No obstante, un bloqueo excesivo puede provocar problemas de rendimiento. Por este motivo, el administrador puede usar este monitor para detectar cuándo se produce esta condición durante un periodo más largo que el definido en el umbral configurado.
El bloqueo puede producirse por muchos motivos que cabe esperar, pero también puede producirse en escenarios en que se puede paliar sin ninguna pérdida de la funcionalidad correspondiente que necesita la aplicación que consume los datos.
Para resolver problemas de bloqueo en un servidor, es necesario conocer la carga de trabajo, los requisitos y los usuarios. El administrador deberá tener en cuenta estos factores a la hora de decidir el procedimiento adecuado para resolverlos. La resolución de problemas de bloqueo puede incluir muchas acciones potenciales, incluidas, entre otras, las siguientes:
Ajuste los valores de configuración de SSAS para cambiar las prioridades de ejecución de consultas. Los cambios de configuración de este tipo no se deben aplicar a bases de datos de producción con un impacto de negocio alto o moderado sin antes probar o entender completamente las implicaciones. El administrador debe revisar en detalle la Guía sobre rendimiento multidimensional de SSAS antes de realizar cualquier cambio sin consultarlo directamente con el soporte técnico de Microsoft para seguir sus instrucciones. De lo contrario, es posible que el rendimiento del servidor se vea afectado de forma negativa, en lugar de mejorar.
Identifique las sesiones de bloqueo y finalícelas manualmente. Cabe destacar que un problema conocido con el producto puede bloquear la cancelación de consultas de larga ejecución.
Revise la eficiencia del diseño de la base de datos a partir de las valiosas prácticas recomendadas que se sugieren en la Guía sobre rendimiento multidimensional de SSAS . Los trabajos de bloqueo de larga ejecución en un servidor se pueden mejorar a través de cambios en la configuración o el diseño, a fin de reducir su grado de bloqueo. Asimismo, también se pueden programar durante un tiempo cuando el bloqueo no sea tan grave, o bien se pueden agregar recursos adicionales al servidor, según se considere necesario, a través de una revisión de contadores de rendimiento para determinar en qué cuellos de botella del rendimiento se producen y generan estos largos escenarios de bloqueo.
Aumente el umbral configurado para evitar la alerta.
Deshabilite el monitor completamente si el bloqueo no constituye un problema en el servidor.
Configurar las propiedades del servidor en Analysis Services
Guía sobre rendimiento multidimensional de SSAS
Nombre | Descripción | Valor predeterminado |
Habilitado | Habilita o deshabilita el flujo de trabajo | True |
Genera alertas | Define si el flujo de trabajo genera una alerta | True |
Intervalo (segundos) | Intervalo de tiempo periódico en segundos en que se ejecuta el flujo de trabajo. | 900 |
Hora de sincronización | Hora de sincronización especificada en un formato de 24 horas. Se puede omitir. |
|
Umbral de advertencia (minutos) | El estado cambia si la duración del bloqueo de al menos una sesión supera el umbral. | 1 |
Target | Microsoft.SQLServer.2008.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.2008.AnalysisServices.MonitorType.Database.BlockingDuration | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.MultidimensionalDatabase.BlockingDuration" Accessibility="Public" Enabled="true" Remotable="true" Priority="Normal" Target="SQLAS!Microsoft.SQLServer.2008.AnalysisServices.MultidimensionalDatabase" TypeID="Microsoft.SQLServer.2008.AnalysisServices.MonitorType.Database.BlockingDuration" ParentMonitorID="SystemHealth!System.Health.PerformanceState" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.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.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>1</Threshold>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>