Re: Clearing out old idle connections

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: "Florian G(dot) Pflug" <fgp(at)phlo(dot)org>
Cc: Richard Huxton <dev(at)archonet(dot)com>, Gavin Hamill <gdh(at)laterooms(dot)com>, pgsql-general(at)postgresql(dot)org
Subject: Re: Clearing out old idle connections
Date: 2006-05-24 19:00:53
Message-ID: 631.1148497253@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

"Florian G. Pflug" <fgp(at)phlo(dot)org> writes:
> You can (at least on linux, I assume it's the same for BSD) set the
> "keepalive" flag of a connection. This results in empty packets being
> sent every 30 seconds or so, and the connection is reported to be dead
> if no ACK is received within a timeout.

> I don't know if postgres has a flag to disable/enable this. If not, I'd
> guess it would be quite trivial to add that.

Postgres has always (well, for as long as I can remember) enabled
keepalive checks on client TCP connections. However, the default
timeouts on TCP keepalive are not "30 seconds or so", but well over
an hour according to the RFC specifications.

Some platforms allow you to fool with the timeouts, some don't.
If you have one that does, recent PG versions will let you configure
that.

I'm not sure whether this will actually solve the OP's problem, because
if the clients are actually still there but not doing anything, the
connection is not going to time out. This is mainly something that
helps with flaky networks, broken Windoze boxes that forget they have
connections, that sort of thing...

regards, tom lane

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Scott Marlowe 2006-05-24 19:05:24 Re: Clearing out old idle connections
Previous Message Tom Lane 2006-05-24 18:54:18 Re: challenging constraint situation - how do I make it