From: | Piotr Stefaniak <postgres(at)piotr-stefaniak(dot)me> |
---|---|
To: | "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Keepalive-related socket options under FreeBSD 9, 10 |
Date: | 2014-06-24 20:01:26 |
Message-ID: | BLU436-SMTP1168899AC73CCA87A5B6CBDF21E0@phx.gbl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
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.
From | Date | Subject | |
---|---|---|---|
Next Message | Heikki Linnakangas | 2014-06-24 20:22:06 | Bug in spg_range_quad_inner_consistent for adjacent operator (was Re: Add a filed to PageHeaderData) |
Previous Message | Matheus de Oliveira | 2014-06-24 19:54:47 | Re: How about a proper TEMPORARY TABLESPACE? |