On Tue, Jun 29, 2010 at 10:53 PM, Fujii Masao <masao.fu...@gmail.com> wrote: > On Tue, Jun 29, 2010 at 11:28 PM, Robert Haas <robertmh...@gmail.com> wrote: >> On Tue, Jun 29, 2010 at 12:42 AM, Tom Lane <t...@sss.pgh.pa.us> wrote: >>> Yeah, a bit of rooting around in the Darwin sources shows that this >>> value is used as a per-connection override for tcp_keepidle. So it >>> is a synonym. Not sure if it's worth supporting when the other value >>> can't be set too. Maybe it'd be more useful to document that people can >>> set the system-wide values if they're desperate. >> >> Well, the default value for tcp_keepidle is 2 hours, and the default >> value for tcp_keepintvl is 75 seconds. Assuming that tcp_keepcount >> defaults to something reasonable (I think the default on Linux is 9), >> the lion's share of the time will be waiting for tcp_keepidle - so >> just the ability to reduce that value to something reasonable should >> help a lot. It's also not much code - proposed patch attached. > > src/interfaces/libpq/fe-connect.c > + appendPQExpBuffer(&conn->errorMessage, > + > libpq_gettext("setsockopt(TCP_KEEPIDLE) failed: %s\n"), > + SOCK_STRERROR(SOCK_ERRNO, > sebuf, sizeof(sebuf))); > > s/TCP_KEEPIDLE/TCP_KEEPALIVE
Fixed. > Don't we need to change pq_getkeepalivesidle? I changed this, but it doesn't seem to have done much. When I do "show tcp_keepalives_idle" on MacOS X, I still get 0. gdb says getsockopt is getting called, though. Am I doing something boneheaded here, or is this just the behavior? > In pq_setkeepalivesidle, if neither TCP_KEEPIDLE nor TCP_KEEPALIVE are > supported, the following message is output. > > setsockopt(TCP_KEEPIDLE) not supported Fixed. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise Postgres Company
tcp_keepalive_for_keepidle-v2.patch
Description: Binary data
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers