Prev: get_whatever_oid, part 1: object types with unqualifed names
Next: [HACKERS] Look-behind regular expressions
From: Fujii Masao on 28 Jun 2010 23:48 On Tue, Jun 29, 2010 at 4:07 AM, Robert Haas <robertmhaas(a)gmail.com> wrote: > It looks like the recent keepalives patch won't support MacOS X, > because MacOS X does not have the TCP_KEEPIDLE, TCP_KEEPINTVL, and > TCP_KEEPCNT socket parameters. �It does have this: > > #define TCP_KEEPALIVE � � � � � 0x10 � �/* idle time used when > SO_KEEPALIVE is enabled */ > > Should we try to support that as a synonym for TCP_KEEPIDLE, if that's > what it is? �Or not worry about it? �Or... what? I'm not sure that can be a synonym for TCP_KEEPIDLE, but if so we should change not only a client-side but also server-side. Regards, -- Fujii Masao NIPPON TELEGRAPH AND TELEPHONE CORPORATION NTT Open Source Software Center -- Sent via pgsql-hackers mailing list (pgsql-hackers(a)postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
From: Tom Lane on 29 Jun 2010 00:42 Robert Haas <robertmhaas(a)gmail.com> writes: > It looks like the recent keepalives patch won't support MacOS X, > because MacOS X does not have the TCP_KEEPIDLE, TCP_KEEPINTVL, and > TCP_KEEPCNT socket parameters. It does have this: It looks to me like there's support for setting KEEPIDLE and KEEPINTVL via sysctl, but of course that's system-wide and presumably requires root privilege to set. (Apple seems to have inherited that from various BSDen, btw; it's not unique to Darwin.) > #define TCP_KEEPALIVE 0x10 /* idle time used when > SO_KEEPALIVE is enabled */ > Should we try to support that as a synonym for TCP_KEEPIDLE, if that's > what it is? Or not worry about it? Or... what? 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. regards, tom lane -- Sent via pgsql-hackers mailing list (pgsql-hackers(a)postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
From: Robert Haas on 29 Jun 2010 10:28 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. Some documentation of how to change this stuff via sysctl on various OSes wouldn't be a bad thing either - anyone feel like writing something up? -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise Postgres Company
From: Fujii Masao on 29 Jun 2010 22:53 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 Don't we need to change pq_getkeepalivesidle? In pq_setkeepalivesidle, if neither TCP_KEEPIDLE nor TCP_KEEPALIVE are supported, the following message is output. setsockopt(TCP_KEEPIDLE) not supported We should change it to something like? neither setsockopt(TCP_KEEPIDLE) nor setsockopt(TCP_KEEPALIVE) are supported Regards, -- Fujii Masao NIPPON TELEGRAPH AND TELEPHONE CORPORATION NTT Open Source Software Center -- Sent via pgsql-hackers mailing list (pgsql-hackers(a)postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
From: Robert Haas on 2 Jul 2010 17:44 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. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise Postgres Company
|
Next
|
Last
Pages: 1 2 Prev: get_whatever_oid, part 1: object types with unqualifed names Next: [HACKERS] Look-behind regular expressions |