我想看看是什么应用程序是原因,但即使我更改为用户 postgres 并运行 psql,它仍然会抛出错误
postgres
为超级用户保留的插槽PostgreSQL 为超级用户保留一些连接。如果您的应用程序不使用超级用户连接,您可以作为超级用户进行连接(例如postgres
)。然后运行诊断查询,例如:
select * from pg_stat_activity;\n
Run Code Online (Sandbox Code Playgroud)\nsuperuser_reserved_connections
环境请参阅superuser_reserved_connections
Postgres 配置中的设置。默认为 3 个保留插槽。
引用版本11文档:
\n\n\n确定为 PostgreSQL 超级用户的连接保留的连接 \xe2\x80\x9cslots\xe2\x80\x9d 的数量。大多数
\nmax_connections
连接可以同时处于活动状态。每当活动并发连接数至少为max_connections
minus时superuser_reserved_connections
,将仅接受超级用户的新连接,并且不会接受新的复制连接。默认值为三个连接。该值必须小于
\nmax_connections
负号max_wal_senders
。该参数只能在服务器启动时设置。
小智 5
如果你想连接到数据库,你需要如何释放服务器上的一些连接
检查所有空闲的 postgres 连接ps auxwww|grep 'idle in transaction'
,它将返回所有带有 pid 的空闲事务进程的列表。
杀死“pid”,例如说 10544 进程具有与数据库的空闲连接,因此kill 10544
将释放单个连接。
现在您可以访问数据库并使用监控查询来检查什么/谁/何时/何地保持您的连接 SELECT * FROM pg_stat_activity;
max_connections
如果您有更多的连接和用户,最好增加您的 postgresql 服务器。
只需按照以下步骤
首先找到你的postgresql.conf
文件如果你不知道它在哪里,用sql查询数据库:SHOW config_file;
Mine is in:/var/lib/pgsql/data/postgresql.conf
以 root 身份登录并编辑该文件。搜索字符串:max_connections
。你会看到一行写着max_connections=100
将该数字设置得更大,检查您的 postgresql 版本的限制。
重新启动 postgresql 数据库以使更改生效
service postgresql restart
。