查看会话数
- 使用 pg_stat_activity 系统视图(最常用)
sql
-- 查看所有活动会话
SELECT COUNT(*) as total_connections FROM pg_stat_activity;
-- 查看详细信息
SELECT
datname as database,
usename as username,
client_addr as client_address,
state,
count(*) as connections
FROM pg_stat_activity
WHERE pid <> pg_backend_pid() -- 排除当前查询会话
GROUP BY datname, usename, client_addr, state
ORDER BY connections DESC;
-- 查看不同状态的会话数
SELECT
state,
count(*)
FROM pg_stat_activity
GROUP BY state;
-- 查看长时间运行的会话
SELECT
pid,
now() - query_start as duration,
query,
state
FROM pg_stat_activity
WHERE state = 'active'
AND now() - query_start > interval '5 minutes';
使用 psql 命令行
psql -c "SELECT count(*) FROM pg_stat_activity;"
使用 pg_ctl 状态检查(需要系统权限)
pg_ctl status
-- 查看正在等待锁的会话
SELECT
count(distinct pid) as waiting_sessions
FROM pg_locks
WHERE NOT granted;
-- 查看最大连接数
SHOW max_connections;

浙公网安备 33010602011771号