ruby mysql 连接池_ruby-on-rails – Rails 4数据库连接池错误

我有一个使用NGINX和Puma托管的rails应用程序.每10个小时左右,该应用程序将无法使用.每当用户尝试连接时,都会显示以下错误消息:

Error during failsafe response: could not obtain a database connection within 5.000 seconds (waited 5.000 seconds)

这将一直持续到应用程序重新启动.

我已经读过这是因为数据库连接池已满,因此必须在rails应用程序中创建线程,这些线程在完成时不会关闭与数据库的连接.

据我所知,应用程序代码中只有一个位置使用线程:一个块使用Ruby Timeout模块,但这不访问数据库.

#config/initializers/database_connection.rb

Rails.application.config.after_initialize do

ActiveRecord::Base.connection_pool.disconnect!

ActiveSupport.on_load(:active_record) do

config = ActiveRecord::Base.configurations[Rails.env] ||

Rails.application.config.database_configuration[Rails.env]

config['reaping_frequency'] = ENV['DB_REAP_FREQ'] || 10 # seconds

config['pool'] = ENV['MAX_THREADS'] || 5

ActiveRecord::Base.establish_connection(config)

end

结束

该站点使用Rails 4.0.0托管.我已经读过这可能实际上是一个Rails 4.0.0问题,并且这在以后的版本中得到修复,但我不确定.

ConnectionTimeoutError on Heroku with Postgres

>有没有办法监视连接池中活动数据库连接的数量?这将使调试更容易.

>在Rails应用程序代码中使用Timeout模块可能导致此问题吗?

>这可能是一个Rails 4.0.0问题,而不是我的应用程序的问题?

rails应用程序正在生产环境中运行.如果需要,我可以提供有关我的Puma,NGINX配置的更多信息.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值