Re: Problem with leaking connections

From: Andy Colson <andy(at)squeakycode(dot)net>
To: Mark Lange <postgres(at)marlan(dot)info>, pgsql-general(at)postgresql(dot)org
Subject: Re: Problem with leaking connections
Date: 2009-09-03 16:10:33
Message-ID: 4A9FEA79.6050305@squeakycode.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Mark Lange wrote:
> Hi,
>
>
>
> we have an webapplication running on tomcat6 with hibernate.
>
> We are using the apache DBCP connection pool (tomcat built in) and an
> postgres 8.19 database server on an different host.
>
> Every few days the pool is running out of connections.
>
> The pool is configured to aggressively close connections when it is
> exhausted, but the application gets very slow when this happens, mostly
> we have to restart
>
> the tomcat server.
>
> #ps –aux | grep postgres on the database host shows me many open
> connections in the select or in transaction state (that never get closed
> until tomcat or postgres restart).
>
> Is there a way to figure out which statement didn’t closed the connections?
>
>
>
> In the application we found a few places where the connections not
> closed and fixed them.
>
> But they are hard to find.
>
>
>
> Is it possible to configure postgres to close connections after a
> timeout or something like this (maybe statement_timeout)?
>
> Are there any other possibilities?
>
>
>
> Thanks
>
> Mark
>

I'm gonna guess you are not leaking connections. That, in itself, would not make pg slow. It would cause errors when you hit the max_connections setting though.

> #ps –aux | grep postgres on the database host shows me many open
> connections in the select or in transaction state

If you mean you see "idle in transaction", then that's what's causing the slow down. And you really don't want to time out or force close them, because the transaction would be rolled back.

I think you're only option is to fix the code. You really need to commit transactions.

If, on the other hand, the ps -aux shows you many that are "idle", then that's what you want. The connection pooler is supposed to keep open connections. (and having a pooler "aggressively close" seems counter productive... why even bother with it then?)

-Andy

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Thomas Kellerer 2009-09-03 16:13:39 Re: PosgreSQL Service does not Start In Vista
Previous Message Joshua D. Drake 2009-09-03 16:02:39 Re: Problem with leaking connections