Thread: BUG #7631: tcp_keepalives_* parameters ignored in postgresql.conf - related to 9.0.10 or 9.0.9 patch?

The following bug has been logged on the website:

Bug reference:      7631
Logged by:          Rob Johnson
Email address:      robj@hightouchinc.com
PostgreSQL version: 9.0.10
Operating system:   RHEL 5.8
Description:        =


The last four lines in my postgresql.conf file, under
/var/lib/pgsql/9.0/data, are:

# (15 per hour * 6 hours =3D 90)
tcp_keepalives_count=3D90
tcp_keepalives_idle=3D240
tcp_keepalives_interval=3D240

I last changed this file on August 13th, 2012.  I remember that when I added
these parameters to postgresql.conf, they showed the correct values when I
ran "show all" at the psql command line.  However, they now all display 0
values.

I ran "show all" and included some of the output below.  The config_file
parameter shows that when the instance started, it used the postgresql.conf
file that includes my tcp_keepalives_* parameters.  The "max_connections"
parameter is 600, which I also have defined in that postgresql.conf file, so
I know that at least *some* non-default parameter values are processed
properly.

I *suspect* this problem was created by the 9.0.10 or 9.0.9 patch, because I
was running 9.0.8 when I changed the tcp_keepalives_* parameters, but that's
just an uninformed guess.

(I updated my postgresql* packages from the PGDG repository to 9.0.9 on
August 20th, and to 9.0.10 on September 25th.)

postgres=3D# show all;
              name               |                 setting                 |
                                                         description

---------------------------------+-----------------------------------------=
+--------------------------------------------------------------------------=
-------
----------------------------------------------
...
 config_file                     | /var/lib/pgsql/9.0/data/postgresql.conf |
Sets the server's main configuration file.
...
 max_connections                 | 600                                     |
Sets the maximum number of concurrent connections.
...
 tcp_keepalives_count            | 0                                       |
Maximum number of TCP keepalive retransmits.
 tcp_keepalives_idle             | 0                                       |
Time between issuing TCP keepalives.
 tcp_keepalives_interval         | 0                                       |
Time between TCP keepalive retransmits.
...
(208 rows)
robj@hightouchinc.com writes:
> The last four lines in my postgresql.conf file, under
> /var/lib/pgsql/9.0/data, are:

> # (15 per hour * 6 hours = 90)
> tcp_keepalives_count=90
> tcp_keepalives_idle=240
> tcp_keepalives_interval=240

> I last changed this file on August 13th, 2012.  I remember that when I added
> these parameters to postgresql.conf, they showed the correct values when I
> ran "show all" at the psql command line.  However, they now all display 0
> values.

I believe those will read as zero in a session connected over a Unix
socket.  Try it in a session connected over TCP ...

            regards, tom lane
Rob Johnson <robj@hightouchinc.com> writes:
>> I believe those will read as zero in a session connected over a Unix
>> socket.  Try it in a session connected over TCP ...

> You are correct.  In a TCP session, I see the values that were set in postgresql.conf.

OK.  It doesn't look like this behavior is actually documented.  I'll
go fix that.

            regards, tom lane
>=20
> robj@hightouchinc.com writes:
> > The last four lines in my postgresql.conf file, under
> > /var/lib/pgsql/9.0/data, are:
>=20
> > # (15 per hour * 6 hours =3D 90)
> > tcp_keepalives_count=3D90
> > tcp_keepalives_idle=3D240
> > tcp_keepalives_interval=3D240
>=20
> > I last changed this file on August 13th, 2012.  I remember that when
> I added
> > these parameters to postgresql.conf, they showed the correct values
> when I
> > ran "show all" at the psql command line.  However, they now all
> display 0
> > values.
>=20
> I believe those will read as zero in a session connected over a Unix
> socket.  Try it in a session connected over TCP ...
>=20
>             regards, tom lane

You are correct.  In a TCP session, I see the values that were set in postg=
resql.conf.
Thank you for the quick answer.

"This message may contain confidential and/or privileged
information. If you are not the addressee or authorized to
receive this for the addressee, you must not use, copy,
disclose, or take any action based on this message or any
information herein. If you have received this message in error,
please advise the sender immediately by reply e-mail and delete
this message. Thank you for your cooperation."