Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Connection still idle after close

Tags:

I've a C# client application that need to checks a table on a Postgres db every 15 minutes. The problem is that I need to install this client into more or less 200 client so, for that I need to close the DB connection after the query.

I use .Close() method but, if I check on pg_stat_activity table on Postgres DB, I can see the connection still open in IDLE status. How can I fix that issue? Is it possible to close definitely the connection?

thanks, Andrea

like image 708
Andrea Girardi Avatar asked Jan 27 '12 12:01

Andrea Girardi


1 Answers

Like most ADO.NET providers, Npgsql uses connection pooling by default. When you Close() the NpgsqlConnection object, an internal object representing the actual underlying connection that Npgsql uses goes into a pool to be re-used, saving the overhead of creating another unnecessarily. (See What does "opening a connection" actually mean? for more).

This suits most applications well, as it's common to want to use a connection several times in the space of a second.

It doesn't suit you at all, but if you include the option Pooling=false in your connection string, it will override this default, and Close() will indeed close the actual connection.

like image 81
Jon Hanna Avatar answered Sep 18 '22 01:09

Jon Hanna