Wednesday, September 10, 2008

Connection Pooling in Asp.Net

Opening a database connection is a resource intensive and time consuming operation.

Connection pooling increases the performance of Web applications by reusing active database

connections instead of creating a new connection with every request. Connection pool manager

maintains a pool of open database connections. When a new connection requests come in, the pool

manager checks if the pool contains any unused connections and returns one if available. If all

connections currently in the pool are busy and the maximum pool size has not been reached, the new

connection is created and added to the pool. When the pool reaches its maximum size all new

connection requests are being queued up until a connection in the pool becomes available or the

connection attempt times out.

Connection pooling behavior is controlled by the connection string parameters. The

following are four parameters that control most of the connection pooling behavior:


Connect Timeout - controls the wait period in seconds when a new connection is requested,

if this timeout expires, an exception will be thrown. Default is 15 seconds.

Max Pool Size - specifies the maximum size of your connection pool. Default is 100. Most

Web sites do not use more than 40 connections under the heaviest load but it depends on how long

your database operations take to complete.

Min Pool Size - initial number of connections that will be added to the pool upon its

creation. Default is zero; however, you may chose to set this to a small number such as 5 if your

application needs consistent response times even after it was idle for hours. In this case the

first user requests won't have to wait for those database connections to establish.

Pooling - controls if your connection pooling on or off. Default is true.

No comments: