【问题标题】:psql: FATAL: sorry, too many clients already, HEROKUpsql:致命:抱歉,已经有太多客户了,HEROKU
【发布时间】: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


【解决方案1】:

最近,我的一个 Python 应用程序遇到了同样的错误消息。我已经联系 Heroku,他们承认了错误:

致命:抱歉,已经有太多客户了

“它通常被触发,因为爱好层数据库是共享资源,这意味着多个数据库将共享来自主机的计算和存储。我们定期监控这些并始终旨在以备用容量运行它们,但偶尔会出现使用高峰来自相邻数据库的数据可能会导致主机出现问题。这是我们不支持将爱好层用于生产应用程序的原因之一。”

他们建议尝试以下选项之一:

  1. 在同一计划中提供一个新的爱好数据库并迁移数据。这将在一个新的数据库主机上启动,这意味着您不再有相同的嘈杂邻居。
  2. 升级到专业计划之一

我没有尝试过第一个选项,但第二个解决了我的问题。这个answer 向您展示了如何逐步进行迁移。

【讨论】:

    猜你喜欢
    • 2020-07-05
    • 2011-02-14
    • 2019-05-21
    • 2012-12-12
    • 2018-11-29
    • 2020-07-04
    • 1970-01-01
    • 2015-08-05
    相关资源
    最近更新 更多