PostgreSQL |剩余的连接插槽保留用于非复制超级用户连接

时间:2018-10-08 07:54:36

标签: postgresql postgresql-9.6

在一个PostgreSQL实例中,我收到一个错误消息“ 剩余的连接槽保留用于非复制超级用户连接”。

但是,当我在超级用户查询下运行以检查可用连接时,我发现有足够的连接可用。但是仍然出现相同的错误。

select max_conn,used,res_for_super,max_conn-used-res_for_super 
res_for_normal 
from 
  (select count(*) used from pg_stat_activity) t1,
  (select setting::int res_for_super from pg_settings where 
name='superuser_reserved_connections') t2,
  (select setting::int max_conn from pg_settings where name='max_connections') t3

输出

enter image description here

我搜索了此错误,每个人都建议增加最大连接数,如下所示。 Heroku "psql: FATAL: remaining connection slots are reserved for non-replication superuser connections"

编辑

我重新启动服务器,一段时间后使用的连接数接近210,但我能够从普通用户连接到服务器。

1 个答案:

答案 0 :(得分:1)

可能不是您问题的直接解决方案,但我建议您使用 pgbouncer 之类的中间件。它有助于保持较少的、固定数量的与 db 服务器的打开连接。 您的客户端将连接到 pgbouncer,pgbouncer 将在内部选择其已打开的连接之一用于您的客户端查询。如果客户端数量超过可能的连接数量,客户端将排队等待一个可用,因此在高流量情况下留出一些喘息空间,同时保持数据库服务器处于可承受的负载下。