1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-31 22:04:40 +03:00

Add support TCP user timeout in libpq and the backend server

Similarly to the set of parameters for keepalive, a connection parameter
for libpq is added as well as a backend GUC, called tcp_user_timeout.

Increasing the TCP user timeout is useful to allow a connection to
survive extended periods without end-to-end connection, and decreasing
it allows application to fail faster.  By default, the parameter is 0,
which makes the connection use the system default, and follows a logic
close to the keepalive parameters in its handling.  When connecting
through a Unix-socket domain, the parameters have no effect.

Author: Ryohei Nagaura
Reviewed-by: Fabien Coelho, Robert Haas, Kyotaro Horiguchi, Kirk
Jamison, Mikalai Keida, Takayuki Tsunakawa, Andrei Yahorau
Discussion: https://postgr.es/m/EDA4195584F5064680D8130B1CA91C45367328@G01JPEXMBYT04
This commit is contained in:
Michael Paquier
2019-04-06 15:23:37 +09:00
parent 959d00e9db
commit 249d649996
11 changed files with 198 additions and 2 deletions

View File

@ -939,6 +939,31 @@ include_dir 'conf.d'
</listitem>
</varlistentry>
<varlistentry id="guc-tcp-user-timeout" xreflabel="tcp_user_timeout">
<term><varname>tcp_user_timeout</varname> (<type>integer</type>)
<indexterm>
<primary><varname>tcp_user_timeout</varname> configuration parameter</primary>
</indexterm>
</term>
<listitem>
<para>
Specifies the number of milliseconds that transmitted data may
remain unacknowledged before a connection is forcibly closed.
A value of 0 uses the system default.
This parameter is supported only on systems that support
<symbol>TCP_USER_TIMEOUT</symbol>; on other systems, it must be zero.
In sessions connected via a Unix-domain socket, this parameter is
ignored and always reads as zero.
</para>
<note>
<para>
This parameter is not supported on Windows and on Linux version
2.6.36 or older.
</para>
</note>
</listitem>
</varlistentry>
</variablelist>
</sect2>

View File

@ -1249,6 +1249,20 @@ postgresql://%2Fvar%2Flib%2Fpostgresql/dbname
</listitem>
</varlistentry>
<varlistentry id="libpq-tcp-user-timeout" xreflabel="libpq_tcp_user_timeout">
<term><literal>tcp_user_timeout</literal></term>
<listitem>
<para>
Controls the number of milliseconds that transmitted data may
remain unacknowledged before a connection is forcibly closed.
A value of zero uses the system default. This parameter is
ignored for connections made via a Unix-domain socket.
It is only supported on systems where <symbol>TCP_USER_TIMEOUT</symbol>
is available; on other systems, it has no effect.
</para>
</listitem>
</varlistentry>
<varlistentry id="libpq-connect-tty" xreflabel="tty">
<term><literal>tty</literal></term>
<listitem>