当出现错误“对不起,已经有太多客户端”时,有没有办法连接到 postgres?

duc*_*duc 4 postgresql

我想看看是什么应用程序是原因,但即使我更改为用户 postgres 并运行 psql,它仍然会抛出错误

Jas*_*sen 5

postgres为超级用户保留的插槽

\n

PostgreSQL 为超级用户保留一些连接。如果您的应用程序不使用超级用户连接,您可以作为超级用户进行连接(例如postgres)。然后运行诊断查询,例如:

\n
select * from pg_stat_activity;\n
Run Code Online (Sandbox Code Playgroud)\n

superuser_reserved_connections环境

\n

请参阅superuser_reserved_connectionsPostgres 配置中的设置。默认为 3 个保留插槽。

\n

引用版本11文档:

\n
\n

确定为 PostgreSQL 超级用户的连接保留的连接 \xe2\x80\x9cslots\xe2\x80\x9d 的数量。大多数max_connections连接可以同时处于活动状态。每当活动并发连接数至少为max_connectionsminus时superuser_reserved_connections,将仅接受超级用户的新连接,并且不会接受新的复制连接。

\n

默认值为三个连接。该值必须小于max_connections负号max_wal_senders。该参数只能在服务器启动时设置。

\n
\n


小智 5

如果你想连接到数据库,你需要如何释放服务器上的一些连接

  1. 检查所有空闲的 postgres 连接ps auxwww|grep 'idle in transaction',它将返回所有带有 pid 的空闲事务进程的列表。

  2. 杀死“pid”,例如说 10544 进程具有与数据库的空闲连接,因此kill 10544将释放单个连接。

现在您可以访问数据库并使用监控查询来检查什么/谁/何时/何地保持您的连接 SELECT * FROM pg_stat_activity;

max_connections如果您有更多的连接和用户,最好增加您的 postgresql 服务器。

只需按照以下步骤

  1. 首先找到你的postgresql.conf文件如果你不知道它在哪里,用sql查询数据库:SHOW config_file;
    Mine is in:/var/lib/pgsql/data/postgresql.conf

  2. 以 root 身份登录并编辑该文件。搜索字符串:max_connections。你会看到一行写着max_connections=100

  3. 将该数字设置得更大,检查您的 postgresql 版本的限制。

  4. 重新启动 postgresql 数据库以使更改生效 service postgresql restart