我正在使用带有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?
提前感谢您的建议。
答案 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_frequency
和config/database.yml
。
请参阅以下API链接中的选项: