【问题标题】:How to override pool and reaping_frequency in heroku's database.yml如何覆盖 heroku 的 database.yml 中的 pool 和 reaping_frequency
【发布时间】:2015-02-07 08:34:53
【问题描述】:

我在 Rails 4.1.1 和 Ruby 2.1.1 中使用 heroku。我正在为 heroku 使用默认数据库配置。这就是为什么我将 database.yml 放入 .gitignore 而我没有将 database.yml 用于生产。

我面临PG::ConnectionBad: PQsocket() can't get socket descriptor 的问题,为了解决这个错误,我需要设置reaping_frequency。

reaping_frequency 可以告诉 Active Record 每 N 秒检查一次连接是挂起还是死掉并终止它们。虽然随着时间的推移,您的应用程序可能会有一些连接挂起,但如果您的代码中的某些内容导致连接挂起,那么 reaper 将不会永久解决该问题。

现在我想将此配置添加到database.yml。

  reaping_frequency: 10

所以我应该直接在database.yml 上添加此配置以进行覆盖,还是有其他更好的方法将此频率设置为heroku?

提前感谢您的建议。

【问题讨论】:

    标签: postgresql heroku ruby-on-rails-4.1 heroku-postgres


    【解决方案1】:

    在你的 config/unicorn.rb 或 config/puma.rb 中设置 pool 和 reaping_frequency:

    config = ActiveRecord::Base.configurations[Rails.env] ||
                Rails.application.config.database_configuration[Rails.env]
    config['pool']              = ENV['DB_POOL'] || 5
    config['reaping_frequency'] = ENV['DB_REAP_FREQ'] || 10 # seconds
    ActiveRecord::Base.establish_connection(config)
    

    【讨论】:

      【解决方案2】:

      Rails 4.0+ 可以直接在config/database.yml 中指定pool 和reaping_frequency。

      请参阅以下 API 链接中的选项:

      【讨论】:

        猜你喜欢
        • 2011-05-11
        • 2011-06-19
        • 2015-01-14
        • 2012-09-20
        • 2013-06-07
        • 1970-01-01
        • 2015-03-08
        • 2018-11-22
        • 2012-07-18
        相关资源
        最近更新 更多