Scott Marlowe wrote: > On Tue, 2007-05-08 at 12:19, Sean Murphy wrote: >> Tom Lane wrote: >>> Sean Murphy <Sean.Murphy@xxxxxxxxxxxxx> writes: >>>> I'm WAY out of my depth here, but my impression, based on the >>>> circumstances, is that there is some sort of an idle session timeout >>>> kicking in (most likely on the client side) and dropping the connection. >>> There's no such timeout in the Postgres server, for sure. I would >>> actually bet that your problem is in some router between the client and >>> the server. In particular, routers that do NAT address mapping >>> typically have a timeout after which they will forget the mapping for an >>> idle connection. If you've got one of those, see if it'll let you >>> change the timeout. >>> >>> If you can't do that, you might think about teaching your client-side >>> code to send dummy queries every so often. >>> >>> regards, tom lane >>> >> I've already maxed out the connection timeout at the firewall... and >> I've been using dummy queries every five minutes, but it just feels like >> a crutch to do so. > > Have you looked into tcp keepalive settings? > > net.ipv4.tcp_keepalive_intvl = 75 > net.ipv4.tcp_keepalive_probes = 9 > net.ipv4.tcp_keepalive_time = 500 > > Not sure if those settings will help with an NAT router or not but it's > worth a try. Pgsql 8.2 can set those for you. > I may be celebrating prematurely, but resetting the tcp_keepalive parameters seems to have done the trick - I left a pgAdmin connection that *always* drops after inactivity up while I went to lunch and it was still alive when I got back. Is there a way to alter the tcp_keepalive settings on an app-by-app basis rather than for the whole system? Thanks!