idle_session_timeout

A configuration parameter determing when to kill idle sessions
This entry relates to a PostgreSQL feature which is part of PostgreSQL 14, due to be released in late 2021.

idle_session_timeout is a configuration parameter determing when to kill idle sessions. It is disabled by default.

idle_session_timeout was added in PostgreSQL 14.

Usage

idle_session_timeout, if set to a non-zero value, will result in any session which is idle outside of a transaction being automatically terminated.

For automatic termination of sessions which are idle within a transaction, see idle_in_transaction_session_timeout (available from PostgreSQL 9.6).

Default value

Default value for idle_session_timeout is: 0 (disabled).

Change history

Examples

postgres=# SHOW idle_session_timeout;
 idle_session_timeout 
----------------------
 5s
(1 row)

... do nothing for at least 5 seconds ...

Log file entries will look something like this:

[2021-01-07 09:49:48 UTC] psql postgres postgres LOG:  00000: statement: SHOW idle_session_timeout;
[2021-01-07 09:49:53 UTC] psql postgres postgres FATAL:  08P02: terminating connection due to idle-session timeout
[2021-01-07 09:49:53 UTC] psql postgres postgres LOG:  00000: disconnection: session time: 0:00:07.060 user=postgres database=postgres host=::1 port=33454

An attempt to execute a command in the same client (psql) will result in an error message reporting the timeout and a reset of the connection:

postgres=# SELECT 1;
FATAL:  terminating connection due to idle-session timeout
server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.
The connection to the server was lost. Attempting reset: Succeeded.

postgres=#

Categories

GUC configuration item, User management

See also

idle_in_transaction_session_timeout, statement_timeout