如何自动终止处于“Idle In Transaction (aborted)”状态的 Postgresql 会话?

问题描述 投票:0回答:1

我有一个在 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;
database postgresql connection
1个回答
0
投票

无法自动终止此类会话。您必须为每个进程 ID 调用

pg_terminate_backend()

您应该修复应用程序,以便它正确结束其数据库事务。

© www.soinside.com 2019 - 2024. All rights reserved.