查看会话数

  1. 使用 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;

posted @ 2026-01-23 10:19  ocmji  阅读(2)  评论(0)    收藏  举报