如何在heroku的database.yml中覆盖pool和reaping_frequency

时间:2014-12-09 12:37:36

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

我正在使用带有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秒挂起或死亡并终止它们。虽然很可能随着时间的推移,您的应用程序可能会挂起一些连接,但如果代码中的某些内容导致挂起连接,则收割机将无法永久解决问题。

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

  reaping_frequency: 10

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

提前感谢您的建议。

2 个答案:

答案 0 :(得分:5)

在配置中的config / unicorn.rb或config / puma.rb set 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)

答案 1 :(得分:4)

Rails 4.0+可以在pool中直接指定reaping_frequencyconfig/database.yml

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