PostgreSQL连接排查常用SQL
相关概念:PostgreSQL
排查 PostgreSQL 连接问题时,pg_stat_activity 基本是第一入口。
查看当前连接
SELECT * FROM pg_stat_activity;查看锁等待
SELECT *
FROM pg_stat_activity
WHERE datname = 'database_name'
AND wait_event_type = 'Lock';查找空闲过久的连接
SELECT
pid,
application_name,
client_addr,
state,
state_change,
now() - state_change AS idle_duration
FROM pg_stat_activity
WHERE state = 'idle'
AND now() - state_change > interval '1 hour'
AND pid <> pg_backend_pid();终止指定连接
SELECT pg_terminate_backend(12870);按应用批量终止空闲连接
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE application_name = 'IntelliJ IDEA 2024.3.5'
AND state = 'idle'
AND pid <> pg_backend_pid();一个实用判断
如果数据库本身没挂,但连接数持续上升、空闲连接很多、锁等待也在积累,优先怀疑:
- 应用连接池参数不合适
- 客户端没有及时释放连接
- 某些工具长期占着空闲连接