Recientemente comencé un nuevo trabajo y tienen un servidor web que se comunica con un servidor de base de datos separado. Recientemente ha estado causando errores de interbloqueo al ejecutar páginas ASP como:
ERROR: MSSQL 2kTransaction (ID de proceso 103) se bloqueó en recursos bloqueados con otro proceso y fue elegido como víctima del bloqueo. Vuelva a ejecutar la transacción.
El error anterior ocurre cuando la página ASP intenta acceder a la base de datos MSSQL 2k.
Creen que es un problema del servidor, por lo que me han pedido que me ocupe de ello. Cualquier ayuda sería muy apreciada.
Respuesta1
Por lo general, los interbloqueos son un problema con el diseño de la base de datos o con inconsistencias en la forma en que la aplicación accede a los recursos de la base de datos. Es frecuente que encuentre soluciones a los problemas realizando cambios allí, en lugar de la infraestructura. Los interbloqueos a menudo no se encuentran durante las pruebas funcionales, pero tienden a encontrarse cuando se realizan pruebas de rendimiento y escalabilidad.
Puede ayudar al equipo de desarrollo con esto utilizando seguimientos que hacen que se registre información más detallada en el registro SQL.
ej: DBCC TRACEON (3605,1205,-1): asegúrese de desactivarlo (DBCC TRACEOFF) cuando haya terminado de capturar los mensajes de registro.
A continuación, verifica las cosas típicas de cualquier instalación SQL:
- asegúrese de que esté enSP4
- tiene la configuración de hardware adecuada: archivos de registro en una unidad raid 1, archivos de datos en una unidad raid 5, tempdb en una unidad raid 1 y copias de seguridad en una unidad raid 5; lo llamaría un mínimo para cualquier servidor real.
- tiene un plan de mantenimiento configurado (copias de seguridad, reconstrucción de índices, controles de integridad, actualización de estadísticas). Creo que SQL 2000 tiene un asistente de plan de mantenimiento para esto.
Por último, comience a planear la migración a SQL 2008 R2: SQL 2000 ya no tiene soporte general y dejará de tener soporte extendido en 2013.
Respuesta2
Necesitas entenderpor quése producen puntos muertos. Siga las instrucciones de la documentación del producto enDetección y finalización de interbloqueosySolución de problemas de interbloqueos.
Es imposible decir de antemano cómo resolver el punto muerto, sin la información del punto muerto. Generalmente, la solución es cambiar el modelo de datos (por ejemplo, agregar un índice faltante) y/o arreglar el diseño de la aplicación (cambiar los patrones de acceso y las consultas).