Re: TCP keepalive support for libpq

From: Marko Kreen <markokr(at)gmail(dot)com>
To: Tollef Fog Heen <tollef(dot)fog(dot)heen(at)collabora(dot)co(dot)uk>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: TCP keepalive support for libpq
Date: 2010-02-12 15:50:30
Message-ID: e51f66da1002120750k7f2c5f7bj1aaf121cb275435e@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 2/11/10, Tollef Fog Heen <tollef(dot)fog(dot)heen(at)collabora(dot)co(dot)uk> wrote:
> | I disagree. I have clients who have problems with leftover client connections
> | due to server host failures. They do not write apps in C. For a non-default
> | change to be effective we would need to have all the client drivers, eg JDBC,
> | psycopg, DBD-DBI, and the apps like psql make changes to turn it on. Adding
> | this option as a non-default will not really help.
>
>
> FWIW, this is my case. My application uses psycopg, which provides no
> way to get access to the underlying socket. Sure, I could hack my way
> around this, but from the application writer's point of view, I have a
> connection that I expect to stay around and be reliable. Whether that
> connection is over a UNIX socket, a TCP socket or something else is
> something I would rather not have to worry about; it feels very much
> like an abstraction violation.

FYI, psycopg does support setting keepalive on fd:

http://github.com/markokr/skytools-dev/blob/master/python/skytools/psycopgwrapper.py#L105

The main problem with generic keepalive support is the inconsistencies
between OS'es. I see 3 ways to handle it:

1) Let user set it on libpq's fd, as now.
2) Give option to set keepalive=on/off, but no timeouts
3) Support all 3 parameters (keepidle, keepintvl, keepcnt)
and ignore parameters not supported by OS. Details here:
http://www.kernel.org/doc/man-pages/online/pages/man7/tcp.7.html
Linux supports all 3, Windows 2, BSDs only keepidle.

I would prefer 3) or 1) to 2).

--
marko

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Heikki Linnakangas 2010-02-12 16:10:05 Re: Re: [COMMITTERS] pgsql: Make standby server continuously retry restoring the next WAL
Previous Message Alvaro Herrera 2010-02-12 15:49:34 Re: review: More frame options in window functions