Pool de conecciones

23/08/2004 - 20:32 por ac.net | Informe spam
Buenas tardes.

Tengo unas dudas sobre el pool de conexion con Ado.Net.
Se que el pool de conexion es la agrupacion de conecciones
iguales que permite reutilizar las conecciones que se han
creados... digamos que los conceptos basicos los entiendos
(al menos teoricamente).

Mis dudas radican en que no comprendo para que es el Min
Pool Size? Es decir la cantida minima en el Pool por
defecto es cero... si la cantidad maxima es 100 (por
default) de que me sirve establecer una cantidad minima a
10 o a 20 o a un numero X... cuales serian las ventajas y
desventajas?

La otra pregunta es con respecto al Connection Lifetime,
que es un seteo para indicar cuanto tiempo estara viva una
coneccion dentro del pool de conexion. Por defecto el
valor es cero (0)... que es el tiempo maximo. Pero cuanto
es el tiempo maximo ????? que implicaciones tiene setear
ese valor a un numero x... ventajas, desventajas?

saludos y gracias a todos

ac.net
 

Leer las respuestas

#1 Pedro Luna Montalvo \(MVP\)
25/08/2004 - 18:01 | Informe spam
"ac.net" escribió en el mensaje
news:b82601c4893f$82bebde0$


Mis dudas radican en que no comprendo para que es el Min
Pool Size? Es decir la cantida minima en el Pool por
defecto es cero... si la cantidad maxima es 100 (por
default) de que me sirve establecer una cantidad minima a
10 o a 20 o a un numero X... cuales serian las ventajas y
desventajas?



Supongamos que tu sistema es bien complejo, y recibe en promedio unas 25
solicitudes simultaneas (muchisimas mas si se trata de un sistema Web). Las
conexiones dentro del pool no son perennes, tienen un tiempo de vida durante
el cual, si ya no son usadas, son desechadas. Imaginate que tu sistema opera
las 24 horas del dia, y que el pico transaccional ocurre en la mañana,
cuando los usuarios empiecen a trabajar la primera ocasion comenzaran a
sentir el esfuerzo que realiza la capa de datos por iniciar nuevas
conexiones, porque el pool tiene un minimo de cero y no mantuvo las
conexiones abiertas. Ahora imagina que en la hora del almuerzo el nivel de
operacion baja considerablemente. Que pasa cuando regresen? Nuevamente
tendran que asumir un tiempo cuando el pool tiene que establecer nuevas
conexiones, porque las existentes ya han sido desechadas. El pool minimo te
permite optimizar ese tiempo, en caso que sea critico, indicandole que se
establezcan un minimo de conexiones abiertas para servir a los clientes.

Ventajas: no permites que la mayoria de usuarios del sistema asuma el tiempo
de apertura de conexion, porque ya existe un grupo de ellas disponible.
Desventaja: precisamente, una conexion abierta que consume recursos del
servidor

Por esto, hay que ser muy juicioso y permitir medir en purebas de
rendimiento cual es el valor ideal para el sistema en el escenario
especifico donde lo implementas.



La otra pregunta es con respecto al Connection Lifetime,
que es un seteo para indicar cuanto tiempo estara viva una
coneccion dentro del pool de conexion. Por defecto el
valor es cero (0)... que es el tiempo maximo. Pero cuanto
es el tiempo maximo ????? que implicaciones tiene setear
ese valor a un numero x... ventajas, desventajas?




Tiempo maximo quiere decir que no se liberara la conexion hasta que la misma
se considere no valida. Por ejemplo, si se detecta que dicha conexion ya no
es valida, la misma sera eliminada y removida del pool. Cuando se "cierra"
una conexion con el metodo Close(), esta conexion no se cierra en realidad,
sino que se devuelve al pool. Si la diferencia entre el tiempo actual y el
tiempo de creacion en segundos, es mayor el valor indicado en el parametro
Connection Lifetime, la conexion sera removida del pool y cerrada. Si el
parametro Connection Lifetime es cero, no se verificara el tiempo de la
conexion. ¿Ves ahora lo importante de crear una capa de datos, en lugar de
hacer que cada cliente se conecte directamente con SQL Server??


Saludos,
Pedro Luna, MVP
Gye, Ecu

Preguntas similares