在一个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
输出
我搜索了此错误,每个人都建议增加最大连接数,如下所示。 Heroku "psql: FATAL: remaining connection slots are reserved for non-replication superuser connections"
编辑
我重新启动服务器,一段时间后使用的连接数接近210,但我能够从普通用户连接到服务器。
答案 0 :(得分:1)
可能不是您问题的直接解决方案,但我建议您使用 pgbouncer 之类的中间件。它有助于保持较少的、固定数量的与 db 服务器的打开连接。 您的客户端将连接到 pgbouncer,pgbouncer 将在内部选择其已打开的连接之一用于您的客户端查询。如果客户端数量超过可能的连接数量,客户端将排队等待一个可用,因此在高流量情况下留出一些喘息空间,同时保持数据库服务器处于可承受的负载下。