From: Robert Haas on
On Fri, Jul 2, 2010 at 5:44 PM, Robert Haas <robertmhaas(a)gmail.com> wrote:
> On Tue, Jun 29, 2010 at 10:53 PM, Fujii Masao <masao.fujii(a)gmail.com> wrote:
>> On Tue, Jun 29, 2010 at 11:28 PM, Robert Haas <robertmhaas(a)gmail.com> wrote:
>>> On Tue, Jun 29, 2010 at 12:42 AM, Tom Lane <tgl(a)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.

Committed, after some further testing.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise Postgres Company

--
Sent via pgsql-hackers mailing list (pgsql-hackers(a)postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers