Hemos estado viendo este problema por un tiempo y realmente estoy tratando de entender qué lo está causando.Aplicación ASP clásica que experimenta "tiempos de espera" de SQL Server y "SQL Server no existe o acceso denegado"
Un par de veces al día veremos períodos donde las páginas web comienzan a arrojar "[Microsoft] [ODBC SQL Server Driver] Tiempo de espera expirado" y poco después las páginas comienzan a lanzar "[Microsoft] [ODBC SQL Server Driver] [ DBNETLIB] SQL Server no existe o acceso denegado ".
Tenemos muchas aplicaciones diferentes que se conectan a este servidor de base de datos. Promedia alrededor de 2500 conexiones concurrentes que procesan un promedio de 10,000 transacciones por segundo. La mayoría de nuestras aplicaciones no tienen ningún problema, los problemas solo parecen ocurrir en el servidor web. (¿Quizás está relacionado con la agrupación de conexiones?)
No sé a qué atribuir este problema. El servidor SQL en cuestión está muy sobrecargado por el trabajo que realiza y está equipado con licencias por procesador. Entonces no creo que estemos viendo un problema de licencia/rendimiento.
Pensé que tal vez había un problema de conectividad IP, así que cambié el ConnectionString para usar la dirección IP y ejecuté algunos pings de larga ejecución. Obtuve 0 paquetes perdidos entre el servidor web y el servidor de la base de datos.
La cadena de conexión ASP ahora se ve así:
Provider=MSDASQL; Driver={SQL Server}; Server=10.0.100.100; Database=DBName; UID=WebUserName; PWD=WebUserPassword; ConnectionTimeout=15; CommandTimeout=120;
El usuario es un usuario que no sea de dominio que conecta con la autenticación de servidor SQL. Entonces, no creo que sea un problema relacionado con el dominio. Revisé los archivos de registro del servidor SQL y no encontré nada que corresponda a los incidentes.
He encontrado another stackoverflow question siguiendo un comportamiento similar, pero sin resolución.
Los detalles:
- Servidor Web: Windows 2003 SP2 estándar, IIS 6.
- base de datos del servidor: Microsoft SQL Server 9.0.4035
alguien ha visto/resuelto este tipo de problema? ¿Alguien tiene alguna sugerencia sobre dónde debería mirar después?
Gracias!
-Zorlack
EDITAR
Puede alguien decirme cuál es la mejor práctica es para realizar consultas SQL en ASP alta carga clásica? ¿Queremos intentar aprovechar la agrupación de conexiones?
Al analizar el código, mucho se parece a esto:
Set objCn = Server.CreateObject("ADODB.Connection")
objCn.Open(Application("RoConnStr"))
'do some stuff
objCn.Close
Set objCn = Nothing
solución (por el consejo de Scotte)
This article se describe, a la perfección, mi problema. Hice el cambio de registro y luego reinicié el servidor.
Problema solucionado!
Gracias, tuve este problema también. Parece que la agrupación de conexiones es una amenaza. Cuando probé con y sin la agrupación de conexiones, el servidor aún creó miles de conexiones TCP en el estado TIME_WAIT. Parece que el grupo de conexiones le permite reutilizar objetos de conexión, pero a veces crean muchas conexiones TCP nuevas entre los servidores. –