【发布时间】:2019-06-18 07:32:45
【问题描述】:
我已经在 Heroku 上部署了一个 Rails 应用程序 2 年了,没有遇到任何问题 今天应用崩溃了。
Rails 日志是:
/app/vendor/bundle/ruby/2.3.0/gems/pg-0.21.0/lib/pg.rb:56:in `initialize': FATAL: sorry, too many clients already (PG::ConnectionBad)
FATAL: sorry, too many clients already
我的 rails 应用是 v5.2.0
我使用 Heroku 和 2 dyno 该数据库是带有“Hobby Dev”的postgres。 我试试:
-
要升级数据库但我得到了同样的错误
heroku addons:create heroku-postgresql:standard-0 --follow DATABASE_URL --app locabri Creating heroku-postgresql:standard-0 on ⬢ xxxx... ! ▸ An error was encountered when contacting the add-on partner to create heroku-postgresql:standard-0: The database you are attempting to follow was not found. 更改环境变量中的 DB_POOL
-
heroku pg:信息
=== DATABASE_URL Plan: Hobby-dev Status: Available Connections: 0/20 PG Version: 10.6 Created: 2017-05-29 07:40 UTC Data Size: 138.8 MB Tables: 12 Rows: 5748/10000 (In compliance) Fork/Follow: Unsupported Rollback: Unsupported Continuous Protection: Off Region: Europe Add-on: postgresql-regular-79163
但没有任何效果。 我无法在数据库上做任何事情,因为我无法连接它并且不知道如何重新启动它。 感谢您的帮助或问题
编辑
- heroku pg:killall 不工作
解决方案
我终于通过更改可用的测功机找到了解决方案!
heroku ps:scale web=0
heroku ps:scale web=2
heroku restart
现在我可以检查“连接泄漏”
【问题讨论】:
-
您的应用程序存在“连接泄漏”,因此这是一个应用程序错误。您必须找出为什么它不断创建新的数据库连接而没有关闭旧的连接。升级或修改数据库将无济于事。提高
max_connections是错误的答案,因为最终会超过任何限制。 -
也许你可以尝试从这里的一些提示中识别打开的连接,stackoverflow.com/q/19814740/3230406 尝试找出为什么连接可能同时超过 20 个。
-
我今天遇到了同样的问题,很遗憾,以上解决方案都不起作用。
标签: ruby-on-rails postgresql heroku