Auto close idle connections for specific user (not by pg_cancel command)

Started by Emi Luabout 7 years ago5 messagesgeneral
Jump to latest
#1Emi Lu
emilu@encs.concordia.ca

Hello,

In psql, may I know is there a way/config that idle connections could be
auto closed (but not by pg_cancel_backend command) for specific user(s)
please?

For example,
select  usename, waiting, query_start  from pg_stat_activity
where usename like 'connUser1' and
           current_query='<IDLE>';

All connections from connUser1, if idle more than 1 day, psql auto close
them.

Thanks a lot.

#2Pavel Stehule
pavel.stehule@gmail.com
In reply to: Emi Lu (#1)
Re: Auto close idle connections for specific user (not by pg_cancel command)

Hi

út 5. 2. 2019 v 18:47 odesílatel Emi <emilu@encs.concordia.ca> napsal:

Hello,

In psql, may I know is there a way/config that idle connections could be
auto closed (but not by pg_cancel_backend command) for specific user(s)
please?

For example,
select usename, waiting, query_start from pg_stat_activity
where usename like 'connUser1' and
current_query='<IDLE>';

All connections from connUser1, if idle more than 1 day, psql auto close
them.

What I know, there is not any timeout for this purpose.

Maybe pgbouncer can do this https://pgbouncer.github.io/config.html

client_idle_timeout

Regards

Pavel

Show quoted text

Thanks a lot.

#3Thomas Poty
thomas.poty@gmail.com
In reply to: Pavel Stehule (#2)
Re: Auto close idle connections for specific user (not by pg_cancel command)

Hi,
Maybe pgterminator could help you
https://github.com/trustly/pgterminator
Regards
Thomas

Le mar. 5 févr. 2019 à 18:52, Pavel Stehule <pavel.stehule@gmail.com> a
écrit :

Show quoted text

Hi

út 5. 2. 2019 v 18:47 odesílatel Emi <emilu@encs.concordia.ca> napsal:

Hello,

In psql, may I know is there a way/config that idle connections could be
auto closed (but not by pg_cancel_backend command) for specific user(s)
please?

For example,
select usename, waiting, query_start from pg_stat_activity
where usename like 'connUser1' and
current_query='<IDLE>';

All connections from connUser1, if idle more than 1 day, psql auto close
them.

What I know, there is not any timeout for this purpose.

Maybe pgbouncer can do this https://pgbouncer.github.io/config.html

client_idle_timeout

Regards

Pavel

Thanks a lot.

#4Thomas Poty
thomas.poty@gmail.com
In reply to: Thomas Poty (#3)
Re: Auto close idle connections for specific user (not by pg_cancel command)

Or you could use
Parameter idle_in_transaction_session_timeout

https://www.cybertec-postgresql.com/en/idle_in_transaction_session_timeout-terminating-idle-transactions-in-postgresql/

And use alter role in database set idle_in_transaction_session_timeout to...

https://www.postgresql.org/docs/10/sql-alterrole.html

Regards

Le mar. 5 févr. 2019 à 18:59, Thomas Poty <thomas.poty@gmail.com> a écrit :

Show quoted text

Hi,
Maybe pgterminator could help you
https://github.com/trustly/pgterminator
Regards
Thomas

Le mar. 5 févr. 2019 à 18:52, Pavel Stehule <pavel.stehule@gmail.com> a
écrit :

Hi

út 5. 2. 2019 v 18:47 odesílatel Emi <emilu@encs.concordia.ca> napsal:

Hello,

In psql, may I know is there a way/config that idle connections could be
auto closed (but not by pg_cancel_backend command) for specific user(s)
please?

For example,
select usename, waiting, query_start from pg_stat_activity
where usename like 'connUser1' and
current_query='<IDLE>';

All connections from connUser1, if idle more than 1 day, psql auto close
them.

What I know, there is not any timeout for this purpose.

Maybe pgbouncer can do this https://pgbouncer.github.io/config.html

client_idle_timeout

Regards

Pavel

Thanks a lot.

#5Thomas Poty
thomas.poty@gmail.com
In reply to: Emi Lu (#1)
Re: Auto close idle connections for specific user (not by pg_cancel command)

You are right. So it is not suitable for your case. Sorry

Le mar. 5 févr. 2019 à 19:27, Ravi Krishna <srkrishna100@aol.com> a écrit :

Show quoted text

https://www.cybertec-postgresql.com/en/idle_in_transaction_session_timeout-terminating-idle-transactions-in-postgresql/

And use alter role in database set idle_in_transaction_session_timeout

to...

https://www.postgresql.org/docs/10/sql-alterrole.html

But this works only for those sessions which has started a transaction and
not committed within the session_timeout period, right ?