nat*_*nko 5 heroku ruby-on-rails-4 heroku-postgres
我在Heroku上部署了我的应用程序时出现问题.它在本地环境中工作正常,但是当部署到Heroku时,通常会出现应用程序错误.
日志中的例外是:ActiveRecord :: ConnectionTimeoutError(无法在5.000秒内获得数据库连接(等待5.000秒))
控制器和模型没什么特别的,相当简单的CRUD操作.
该应用程序使用Rails 4构建,它使用标准的heroku postgres数据库附加组件和WEBrick服务器.
我试过像这样设置配置:
#config/initializers/database_connection.rb
Rails.application.config.after_initialize do
ActiveRecord::Base.connection_pool.disconnect!
ActiveSupport.on_load(:active_record) do
config = Rails.application.config.database_configuration[Rails.env]
config['reaping_frequency'] = ENV['DB_REAP_FREQ'] || 5 # seconds
config['pool'] = ENV['DB_POOL'] || 10
config['timeout'] = ENV['DB_TIMEOUT'] || 10
ActiveRecord::Base.establish_connection(config)
end
end
Run Code Online (Sandbox Code Playgroud)
但它没有帮助.
你知道什么可以提供帮助吗?
您的数据库池不是问题.这是一个已知的rails问题.如果您使用的是Rails 4.0.2,那么声明就是在Gemfile中使用rails master.我也遇到了这个问题,但是我还没有尝试过这个解决方案.
您发布的代码示例是合法的。您的 Heroku 配置环境中可能存在某些问题。
您看到的错误表明您的DB_POOL值设置得太低。此错误表示应用程序服务器等待从池中检查连接时超时,不一定是连接失败。您是否有可能DB_POOL设置为 1 或较低的值?
您还应该验证数据库配置是否完整,是否具有默认数据库配置中的完整主机名、凭据和配置集。您可以在 Heroku 控制台中运行以下命令:
Rails.application.config.database_configuration[Rails.env]
Run Code Online (Sandbox Code Playgroud)
您的 Heroku 配置设置中有一些不正确的内容导致了此超时。
| 归档时间: |
|
| 查看次数: |
3563 次 |
| 最近记录: |