Heroku和Postgresql以及Rails - 连接过多错误

6

我在使用Ruby on Rails、Heroku和Postgresql时出现了以下错误:

PG::Error (FATAL:  too many connections for role "********"

我已经多次重启服务器,但问题仍未解决。有什么建议吗?


网站的流量很大吗? - deefour
可能是[Heroku“psql:FATAL:remaining connection slots are reserved for non-replication superuser connections”]的重复问题(https://dev59.com/mWgt5IYBdhLWcg3wvgBu)。 - Craig Ringer
@sabes 你需要配置Rails使用的最大连接数,或者使用连接池。请参考我刚刚链接的帖子中的答案。 - Craig Ringer
这只是一个暂存服务器,所以它并没有太多的流量。 - sabes
Craig,只需要增加database.yml中的“pool”属性吗? - sabes
@sabes 增加 Rails 连接池的大小将允许它从 PostgreSQL 中获取更多连接。你的 Rails 应用程序已经尝试使用过多的连接。你需要减少 Rails 应用程序使用的连接数,以使其保持在 max_connections 以下。不要仅仅增加 max_connections;首先阅读 http://wiki.postgresql.org/wiki/Number_Of_Database_Connections。 - Craig Ringer
2个回答

3
给Heroku支付更多的钱并不总是解决问题的答案。
当我遇到使用开发级别数据库时达到行限制row limit的问题时,通过在控制台中删除行直到低于限制解决了这个问题。
另一个可能会遇到此问题的方法是使用unicorn。连接使用的数量是dyno数量乘以每个dyno的独角兽工作者数量。Heroku在这里解释了所有内容,并提供了一种在config/unicorn.rb中配置它的方法。
此外,查看正在使用的连接数也很有用。只需运行heroku pg:info即可。

1

显然我在一个开发级别的数据库上。我升级到了鹤级生产数据库,现在一切都应该没问题了。


4
开发(和基础)数据库最多只能连接20个 - 请参阅https://devcenter.heroku.com/articles/heroku-postgres-starter-tier#limits - hgmnz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接