



























以下是查询 PostgreSQL 当前连接数的常用方法,按场景分类整理:
SELECT COUNT(*) AS current_connections
FROM pg_stat_activity;
SELECT
datname AS database_name,
COUNT(*) AS connection_count
FROM pg_stat_activity
GROUP BY datname
ORDER BY connection_count DESC;
SELECT
usename AS username,
COUNT(*) AS connection_count
FROM pg_stat_activity
GROUP BY usename
ORDER BY connection_count DESC;
SELECT
state,
COUNT(*) AS count
FROM pg_stat_activity
GROUP BY state
ORDER BY count DESC;
active:正在执行查询idle:连接空闲(事务已结束)idle in transaction:事务中但无操作(需警惕长事务)idle in transaction (aborted):事务中发生错误SELECT
current_setting('max_connections') AS max_connections,
(SELECT COUNT(*) FROM pg_stat_activity) AS current_connections,
ROUND(
100.0 * (SELECT COUNT(*) FROM pg_stat_activity)
/ current_setting('max_connections')::int,
2
) AS usage_percent;
# 总连接数
psql -c "SELECT COUNT(*) FROM pg_stat_activity;"
# 详细列表(含数据库、用户、状态)
psql -c "SELECT pid, usename, datname, state, query FROM pg_stat_activity;"
pg_read_all_stats 角色或超级用户权限查看全部连接。-- 查找空闲超过 10 分钟的连接(可能泄漏)
SELECT pid, usename, datname, state, query_start,
NOW() - query_start AS idle_time
FROM pg_stat_activity
WHERE state = 'idle'
AND NOW() - query_start > INTERVAL '10 minutes'
ORDER BY idle_time DESC;
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE state = 'idle'
AND NOW() - query_start > INTERVAL '1 hour';
pg_stat_activity 指标)max_connections * 0.8)💡 您当前配置的
max_connections = 500(根据您上传的配置文件),建议日常使用保持在 70% 以下,预留应急空间。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。