ASP.NET - Limpiar en pool de conexiones en ADO.NET

 
Vista:

Limpiar en pool de conexiones en ADO.NET

Publicado por Patricio Merino (4 intervenciones) el 24/08/2006 15:01:58
Hola a todos.

Tengo una aplicación hecha en .NET, en la cual se hace una conexión a una base de datos Informix, mediante el componente ADO.NET. Específicamente es una aplicación Web hecha en ASP.NET. Lo que sucede es que cuando un usuario abre la página principal de mi aplicación se utiliza una de las conexiones disponibles en el pooling. Hasta el momento todo bien...

El problema es cuando un usuario cierra su página (incluso, cierra el browser). Ya que si veo el pool de conexiones del servidor, aún sigue existiendo la conexión en el pooling. ¡¡El inconveniente es que esta conexión puede quedar ahí por MUCHO TIEMPO!! Por lo tanto, cuando se conectan 200 usuarios en forma concurrente (en PCs diferentes), se lanza el mensaje: "EL TAMAÑO DEL POOL HA SIDO SUPERADO". Mis preguntas son:

1.- ¿Cuánto tiempo queda esta conexión en el pooling del servidor de datos?
2.- ¿Es posible cambiar este tiempo, para que en un lapso de 30 minutos se saque del pooling, si no está siendo usada?
3.- ¿Cómo puedo sacar las las conexiones del pooling que no están siendo usadas?
3.- ¿Cuál es el tamaño máximo permitido del pooling de conexiones?
4.- Si llego a cambiar el max pool size a 200 (por ejemplo), supongo que la performance del servidor de datos podría disminuir a medida que se van usando más conexiones del polling?? o no?

Mi entorno de desarrollo es:

- Microsoft Visual Studio .NET 2003
- .NET Framework 1.1
- IBM Informix 10
- IBM Informix Client SDK 2.90.xC3

Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Limpiar en pool de conexiones en ADO.NET

Publicado por Pablo Iñareta (73 intervenciones) el 25/08/2006 12:13:38
No se cuanto tiempo pueden quedar las conexiones abiertas, en cualquier caso eso depende del servidor de datos, no de ADO.NET, en general todas las preguntas que haces son del servidor de datos.
El componente o el diseño de la aplicación deberia cerrar todas las conexiones tanto si las operaciones q realiza tienen exito como si no, en ese sentido el fallo es de la aplicacion. Tambien influye en esto si estas trabajando con ADO en modo conectado o desconectado, te recomiendo este ultimo, utiliza dataAdapter que se en cargan de abrir y cerrar las conexiones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Limpiar en pool de conexiones en ADO.NET

Publicado por Patricio Merino (4 intervenciones) el 25/08/2006 15:23:11
Pablo:

Si estoy cerrando todas las conexiones con el método close(). Incluso si el comand se ejecuto con exito o no. Esto lo puedo asegurar, ya que es lo primero que me dediqué a verificar cuando tuve este problema.

El dataAdapter no lo estoy usando puesto que en cada llamado en la base de datos el proceso es el siguiente:

....
conn.Open()
...
comand.ExecuteCommand()
...
conn.Close()

El close lo inserte dentro del finally de cada método, por ende, siempre se ejecuta (obviamente, previo a cerrar la conexión, se pregunta que esta operación se pueda realizar).

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Limpiar en pool de conexiones en ADO.NET

Publicado por Patricio Merino (4 intervenciones) el 25/08/2006 15:23:12
Pablo:

Si estoy cerrando todas las conexiones con el método close(). Incluso si el comand se ejecuto con exito o no. Esto lo puedo asegurar, ya que es lo primero que me dediqué a verificar cuando tuve este problema.

El dataAdapter no lo estoy usando puesto que en cada llamado en la base de datos el proceso es el siguiente:

....
conn.Open()
...
comand.ExecuteCommand()
...
conn.Close()

El close lo inserte dentro del finally de cada método, por ende, siempre se ejecuta (obviamente, previo a cerrar la conexión, se pregunta que esta operación se pueda realizar).

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Limpiar en pool de conexiones en ADO.NET

Publicado por Patricio Merino (4 intervenciones) el 25/08/2006 15:23:13
Pablo:

Si estoy cerrando todas las conexiones con el método close(). Incluso si el comand se ejecuto con exito o no. Esto lo puedo asegurar, ya que es lo primero que me dediqué a verificar cuando tuve este problema.

El dataAdapter no lo estoy usando puesto que en cada llamado en la base de datos el proceso es el siguiente:

....
conn.Open()
...
comand.ExecuteCommand()
...
conn.Close()

El close lo inserte dentro del finally de cada método, por ende, siempre se ejecuta (obviamente, previo a cerrar la conexión, se pregunta que esta operación se pueda realizar).

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar