我有一个在 Linux 机器上运行的 PostgreSQL 15 服务器,有很多客户端连接并执行一些长事务。有时我的 max_connection 数量超出了,因此我必须通过从表“pg_stat_activity”运行查询来手动杀死它们。
虽然这个过程有点累。是否有任何 Postgresql 参数或技巧可以帮助我避免这个重复的问题?
我通过下面的查询找到 pid:
select * from pg_stat_activity where datname='<mydatabase>'
and pid<>pg_backend_pid() and state='idle in transaction (aborted)'
and state_change < current_timestamp - INTERVAL '120' MINUTE;
无法自动终止此类会话。您必须为每个进程 ID 调用
pg_terminate_backend()
。
您应该修复应用程序,以便它正确结束其数据库事务。