Thanks for your responses, guys. I think we can finally put this topic to the bed with that - I have satisfactory answer. For those who would be interested and would dig into this topic later on, here is fairly detailed explanation on how to use pg_terminate_backend in this case, coupled with usage of pg_stat_activity and cron (it also has code too): http://stackoverflow.com/questions/12391174/how-to-close-idle-connections-in-postgresql-automatically
Pursuant to Stehen's suggestion, I've attached a scripts that you can execeute from a cron. I wrote it when I was working for a previous company that used to have users that opened connections and transaction that did nothing for a long time.
Just adjust the max_time for your liking. You can also add OR current_query = '<IDLE>' to kill stagnant connections.
On Mon, Dec 21, 2015 at 11:42 AM, Stephen Frost <sfrost@snowman.net> wrote:
Oleg,
* oleg yusim (olegyusim@gmail.com) wrote: > tcp_keepalives_idle = 900 > tcp_keepalives_interval=0 > tcp_keepalives_count=0 > > Doesn't terminate connection to database in 15 minutes of inactivity of > psql prompt. So, it looks like that would work only for case if network > connection is broken and session left hanging. For psql prompt case looks > like pg_terminate_backend() would be the only solution.
Those settings aren't for controlling idle timeout of a connection.
pg_terminate_backend() will work and could be run out of a cronjob.
Thanks! Stephen
--
Melvin Davidson I reserve the right to fantasize. Whether or not you wish to share my fantasy is entirely up to you.