Re: [HACKERS] Keepalive-related socket options under FreeBSD 9, 10

2014-07-02 Thread Palle Girgensohn
 Since upgrading FreeBSD from 8 to 9, I've noticed the following messages
 showing up in logs when a connection with pgAdmin3 is made:
 
 LOG:  getsockopt(TCP_KEEPCNT) failed: Protocol not available
 STATEMENT:  SELECT setting FROM pg_settings WHERE name IN ('autovacuum',
 'track_counts')
 LOG:  getsockopt(TCP_KEEPIDLE) failed: Protocol not available
 STATEMENT:  SELECT setting FROM pg_settings WHERE name IN ('autovacuum',
 'track_counts')
 LOG:  getsockopt(TCP_KEEPINTVL) failed: Protocol not available
 STATEMENT:  SELECT setting FROM pg_settings WHERE name IN ('autovacuum',
 'track_counts')
 
 tcp_keepalives_idle, tcp_keepalives_interval, and tcp_keepalives_count
 are all set to the default (0), which means system default.
 
 My guess as to what causes this:
 
 src/backend/libpq/pqcomm.c apparently assumes that if TCP_KEEPIDLE 
 friends are defined, then the respective options are readable, but
 according to man tcp, that is not the case for FreeBSD 9 (and 10):
 
 TCP_KEEPINIT
 This write-only setsockopt(2) option accepts a per-socket
 timeout argument of u_int in seconds, for new, non-estab-
 lished TCP connections.  For the global default in mil-
 liseconds see keepinit in the MIB Variables section fur-
 ther down.
 
 As a work-around, I've set the keepalive options to the system defaults
 provided by man tcp.
 

Hi,

This only happens with some clients, right? I'm seeing it for only happens for 
some programs, like connecting from perl? I've seem discussions a while back 
about why they are read-only.

I see it to, but only for a perl connection, nothing for psql or the likes.

Do you have any suggestions for a patch for the port, in the mean while?

Palle



signature.asc
Description: Message signed with OpenPGP using GPGMail


[HACKERS] Keepalive-related socket options under FreeBSD 9, 10

2014-06-24 Thread Piotr Stefaniak
Since upgrading FreeBSD from 8 to 9, I've noticed the following messages
showing up in logs when a connection with pgAdmin3 is made:

LOG:  getsockopt(TCP_KEEPCNT) failed: Protocol not available
STATEMENT:  SELECT setting FROM pg_settings WHERE name IN ('autovacuum',
'track_counts')
LOG:  getsockopt(TCP_KEEPIDLE) failed: Protocol not available
STATEMENT:  SELECT setting FROM pg_settings WHERE name IN ('autovacuum',
'track_counts')
LOG:  getsockopt(TCP_KEEPINTVL) failed: Protocol not available
STATEMENT:  SELECT setting FROM pg_settings WHERE name IN ('autovacuum',
'track_counts')

tcp_keepalives_idle, tcp_keepalives_interval, and tcp_keepalives_count
are all set to the default (0), which means system default.

My guess as to what causes this:

src/backend/libpq/pqcomm.c apparently assumes that if TCP_KEEPIDLE 
friends are defined, then the respective options are readable, but
according to man tcp, that is not the case for FreeBSD 9 (and 10):

TCP_KEEPINIT
This write-only setsockopt(2) option accepts a per-socket
timeout argument of u_int in seconds, for new, non-estab-
lished TCP connections.  For the global default in mil-
liseconds see keepinit in the MIB Variables section fur-
ther down.

As a work-around, I've set the keepalive options to the system defaults
provided by man tcp.


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