Los foros del Guille

MKN Reservas (Maro - Kayak Nerja)


Kayak Maro - Rutas y alquiler de kayak y tabla

Si no encuentras respuesta, puedes buscar en el sitio del Guille

Google
 
Selecciona el foro y pulsa en mostrar:     Mostrar 
De tu inter�s (algunos de los avisos publicados)

01/feb./2019

Como te avisé, desde el 1 de febrero de 2019

No se podrán escribir nuevos mensajes ni editar los existentes

En breve solo se mostrarán los mensajes con respuestas.
Posiblemente para el 1 de marzo, solamente se mostrarán los que tengan respuestas y estén marcados como respuesta válida.

  Foro: ASP.NET.General Cantidad:  Desde:   Hasta:    Aplicar   Responder 
Respuestas a: 41183 - Cerrar por completo las conecciones con la Base de Datos
IDAsuntoFechaNick 
41183 Cerrar por completo las conecciones con la Base de Datos09/05/08 15:33dherrerag   
Tengo una aplicacion sobre ASP.NET que se conecta a una DB de SQL Server 2005.
Mi problema es que al momento de realizar una consulta y tratar de cerrar la coneccion, relamente no se cierran. Lo que usualmente hago para cerrar es

Dr.Close()
Dr = Nothing
MyConnection.Close()

Pero si reviso desde el Monitor de Actividad del Sql Server Management Studio, hay muchas sesiones con el estatus sleeping, y el problema es que cuando llega a 100 me manda error la aplicacion.

¿Como cierro definitivamente las conecciones?

Gracias
IDAsuntoFechaNick 
41341 Re: Cerrar por completo las conecciones con la Base de Datos (Resp: 41183)14/05/08 16:34dherrerag   
Después de estar buscando un buen rato la solución a este problema, encontré esto:

Al parecer el problema se encuentra en el manejo del pool. Por lo que lei se supone que al momento de usar datareaders sobre una coneccion, estas al momento de cerrarse permiten reutilizarse y es por eso que continuan abiertas. Esto implica que el que desarrolla deba de tener un control exacto sobre todas las conecciones y objetos sobre estas ultimas.

Si bien, es una forma de reutilizar recursos y optimizar el tiempo de respuesta, implica una desgastante tarea por parte del desarrollador al administrar de forma correcta todos sus objetos.

Para serles honesto, lo vi muy enrredado todo esto.

En fin, para solucionarlo, en mi cadena de coneccion a la DB agregue ";Pooling=False", y con esto las conecciones que quedan en "sleeping" se cierran mas rapido y me permite abrir mucho mas conecciones a la DB (logre abrir arriba de 1000 {creo que llega hasta 32,768}, cuando antes llegaba solo a 100) sin que el servidor se viera afectado.

Algo curioso que encontre (que quiza a alguien pudiera servirle) es que si al momento de estar corriendo mi aplicación, cambio algo sobre mi cadena de coneccion (por decir, si la origina era:
"Data Source=myserver;Initial Catalog=rh;user=x;password=x; Pooling=False", al cambiarla por "Data Source=myserver;Initial Catalog=rh; Pooling=False;user=x;password=x") todas las conecciones se cerraban (con la primera cadena), aunque esto implica que el servidor se tarde un poco mas en la respuesta e incluso, hace de nuevo una validacion de credenciales.

En resumen, logre con esto quitarme el problema de encima (ya que mas de 100 usuarios se conectan al mismo tiempo), aunque quiza no sea la mejor solucion al 100%.

Espero que el buen Guille pueda en algun tiempo, dar una explicacion completa sobre esto, y como solucionarla al 100

Informacion al respecto aqui:

http://betav.com/blog/billva/2007/05/managing_and_monitoring_net_co.html

Saludos,


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.

 
(c) Guillermo 'guille' Som, 2005-2026  - foros.elGuille v1.0.6.3 (01/Jun/2021 12:45 GMT +2)  - (ASP.NET v4.0.30319.42000)
 
La hora GMT del servidor es: 09/06/2026 14:57:29 GMT