WITH inactive_connections AS (
SELECT
pid,client_addr,
RANK ( ) OVER ( PARTITION BY client_addr ORDER BY backend_start ASC ) AS RANK
FROM
pg_stat_activity
WHERE
pid <> pg_backend_pid ( )
AND
application_name !~ '(?:psql)|(?:pgAdmin.+)'
AND
datname = current_database ( )
AND
usename = CURRENT_USER
AND
STATE IN ( 'idle', 'idle in transaction', 'idle in transaction (aborted)', 'disabled' )
AND
CURRENT_TIMESTAMP - state_change > INTERVAL '5 minutes'
)
SELECT
pg_terminate_backend ( pid )
FROM
inactive_connections
WHERE
RANK > 1
PostgreSql:Connection open error . 53300: sorry, too many clients already
优化闲置连接:PostgreSQL后台清理策略
最新推荐文章于 2025-07-15 15:28:04 发布
本文介绍如何使用SQL查询来检测并终止在5分钟内未活动的、非关键应用的PostgreSQL后台连接,提高数据库性能。通过RANK函数筛选出不需要的连接并执行pg_terminate_backend操作。
3470





