killing idle_connections

From: Walters Che Ndoh <chendohw(at)gmail(dot)com>
To: pgsql-admin(at)postgresql(dot)org
Subject: killing idle_connections
Date: 2020-12-01 02:49:39
Message-ID: CAJ=HdqKPSJNJwit3LwXjNE04_uZwRhstm5e0-xMF5pHNXqEHjA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-admin

I have two DB's in prod
- DB 1 has pg12 and pgbouncer for connection pooling
- DB 2 has pg10 and F5 for connection pooling

Both DB's have a max connection of 500.
During pick hours i always run out of connections, even though i have 3
superuser reserved, my connections still go beyond 500.

So when I try to check active, idle and idle_in_transaction, this is what I
get.

*Count State*
5
24 active
4 idle in transaction
414 idle

most of the time *idle connection *is at *400* plus or above *350.*
So i created a script to kill connections that have been idle for *20 secs* and
the *cron* run every *1 minute*. After a while, i started getting this
error from developer *"57P01: terminating connection due to administrator
command".*

I understand that connection pooling is designed to reuse idle connections
and if you kill them, you are actually or probably killing a connection.

Or maybe the time i set for the script to run is too aggressive?

Or should I not run the script in the first place since connection pooling
handles idle connections?

Does anyone have any suggestions to overcome my connection problems?

I have also done OS tuning and I am convinced they are okay.

Any ideas🙏

Many Thanks
Ndoh

Responses

Browse pgsql-admin by date

  From Date Subject
Next Message David G. Johnston 2020-12-01 02:59:50 Re: killing idle_connections
Previous Message Yambu 2020-11-30 21:38:42 Re: Query duration and query text