156

我正在使用 Postgresql 后端在 Heroku 上开发一个应用程序。在尝试从 CLI 和在服务器上加载页面时,我会定期收到此错误消息:

psql: FATAL: remaining connection slots are reserved for non-replication superuser connections

任何人以前见过这个或请帮助我指出正确的方向?

4

7 回答 7

82

您要么需要增加max_connections配置设置,要么(可能更好)使用连接池通过较小的连接池路由大量用户请求。

https://wiki.postgresql.org/wiki/Number_Of_Database_Connections

于 2012-08-07T14:58:34.870 回答
18

当我忘记关闭连接时发生此异常

于 2013-04-11T14:17:26.050 回答
9
于 2015-08-12T16:30:58.800 回答
6

我实际上尝试使用以下方法在 django 端实现连接池:

https://github.com/gmcguire/django-db-pool

但我仍然收到此错误,尽管将可用连接数降低到低于 20 个打开连接的标准开发数据库配额。

这里有一篇关于如何将您的 postgresql 数据库移动到 Amazon RDS 的免费/廉价层的文章。这将允许您设置max_connections更高。这也将允许您使用 PGBouncer 在数据库级别池连接。

https://www.lewagon.com/blog/how-to-migrate-heroku-postgres-database-to-amazon-rds

更新:

Heroku 回复了我的公开票,并表示我的数据库在他们的网络中负载平衡不正确。他们说,改进他们的系统应该可以防止将来出现类似的问题。尽管如此,支持手动重定位我的数据库和性能显着提高。

于 2013-01-17T05:22:32.490 回答
0

要在 Linux 中重现相同的问题:

for i in {1..300}; do
     PGPASSWORD=MY_PASSWORD gnome-terminal -e  $'/usr/bin/psql -h \'127.0.0.1\' -p 5432 -U MY_USERNAME' 
done

在 dotnet 客户端中,您可以阅读:

  System.InvalidOperationException: An exception has been raised that is likely due to a transient failure.
   ---> Npgsql.PostgresException (0x80004005): 53300: sorry, too many clients already
于 2021-05-13T15:52:06.643 回答
0

该错误消息意味着该应用程序已用完所有可用连接。

在aws中使用带有knex和typescript的postgres进行一些查询和更新工作时,当它完成390个数据库操作时会弹出问题,错误会阻止正常的knex.destroy()操作。错误信息是:

(节点:66236)UnhandledPromiseRejectionWarning:错误:剩余的连接槽保留用于非复制超级用户连接

当 knex.destroy() 转到正确的位置时,错误就消失了。

于 2022-02-16T04:38:16.563 回答
0

在我的情况下,我有很多空闲连接,所以我必须在创建新连接之前重用空闲连接,

于 2021-09-29T11:43:28.423 回答