El monitor genera una alerta cuando el número de sesiones bloqueadas durante un período de tiempo superior al definido para WaitMinutes supera el umbral configurado.
Cuando el número de sesiones bloqueadas durante más tiempo que el valor WaitMinutes configurado supera el umbral configurado, el monitor genera alertas. 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, es posible que el administrador use este monitor para tener en cuenta cuando se produce esta condición durante más tiempo que el valor WaitMinutes configurado para un número de sesiones superior al 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. Un 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 varias acciones potenciales, incluidas, entre otras, las siguientes:
Ajuste los valores de configuración de SSAS para aumentar el paralelismo y evitar el bloqueo debido a la contención de recursos. Los cambios de configuración de este tipo no se deben realizar en las bases de datos de producción con un impacto de negocio alto o moderado sin primero probar o entender completamente las implicaciones. El administrador debe revisar de forma exhaustiva la Guía sobre rendimiento multidimensional de SSAS (capítulo 3 en general y, de forma más específica, sección 3.8 relativa a las consideraciones de rendimiento de varios usuarios) antes de realizar cualquier cambio sin consultarlo directamente o dirigirse al soporte técnico de Microsoft. De lo contrario, es posible que el rendimiento del servidor se vea afectado de forma negativa en lugar de mejorar.
Mejore el rendimiento de las consultas en general para las consultas que se identifican como causantes de bloqueos.
Identifique la sesión de bloqueo que incluye la operación de procesamiento y reduzca el bloqueo al realizar una programación adecuada de trabajos de procesamiento, optimizar consultas y configurar un tiempo de espera adecuado.
Revise el diseño de la base de datos para obtener eficiencia. 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. Por lo tanto, con el fin de reducir la gravedad de bloqueo, los trabajos se pueden programar durante un tiempo cuando el bloqueo no tenga consecuencias tan graves. También se pueden agregar recursos adicionales al servidor, si la revisión de los contadores de rendimiento determina la presencia de cuellos de botella en el rendimiento lo que provoca estos largos escenarios de bloqueo.
Aumente el umbral o el valor WaitMinutes que se ha 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 | Sí |
Genera alertas | Define si el flujo de trabajo genera una alerta | Sí |
Intervalo (segundos) | Intervalo de tiempo periódico en segundos en que se ejecuta el flujo de trabajo. | 900 |
Número de ejemplos | El estado cambia si el número de infracciones de umbral es mayor o igual que el número mínimo de infracciones. | 4 |
Hora de sincronización | Hora de sincronización especificada en un formato de 24 horas. Se puede omitir. |
|
Umbral crítico | El estado cambia cuando el número de sesiones bloqueadas supera el umbral. | 10 |
Tiempo de espera (segundos) | Especifica el tiempo durante el que se puede ejecutar el flujo de trabajo antes de que se cierre y se marque como error. | 300 |
Minutos de espera | El parámetro Minutos de espera define el tiempo de espera mínimo para que el monitor considere la sesión. | 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>