Ruby on rails 如何修复Rails PostgreSQL应用程序中的DB错误?

Ruby on rails 如何修复Rails PostgreSQL应用程序中的DB错误?,ruby-on-rails,postgresql,amazon-web-services,amazon-rds,Ruby On Rails,Postgresql,Amazon Web Services,Amazon Rds,我想知道如何修复Rails 6应用程序中连接到AWS RDS数据库的以下错误: 无法在5.000秒内从池中获取连接 (等待了5.075秒);所有池连接都在使用中 到目前为止,我尝试过: 将database.yml中的池增加到100 从2升级数据库实例 vCPU到4个CPU。内存为16GB 谢谢。我建议浏览此链接。至少,验证Postgres服务器可以处理的活动连接数限制 如果您使用Unicorn pre fork服务器模型,则可能会配置before/after钩子,以优雅地打开和关闭数据库连接

我想知道如何修复Rails 6应用程序中连接到AWS RDS数据库的以下错误:

无法在5.000秒内从池中获取连接 (等待了5.075秒);所有池连接都在使用中

到目前为止,我尝试过:

  • 将database.yml中的池增加到100
  • 从2升级数据库实例 vCPU到4个CPU。内存为16GB

谢谢。

我建议浏览此链接。至少,验证Postgres服务器可以处理的活动连接数限制

如果您使用Unicorn pre fork服务器模型,则可能会配置before/after钩子,以优雅地打开和关闭数据库连接

before_fork do |server, worker|

  Signal.trap 'TERM' do
    puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
    Process.kill 'QUIT', Process.pid
  end

  defined?(ActiveRecord::Base) and
    ActiveRecord::Base.connection.disconnect!
end

after_fork do |server, worker|

  Signal.trap 'TERM' do
    puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to sent QUIT'
  end

  defined?(ActiveRecord::Base) and
    ActiveRecord::Base.establish_connection(
      Rails.application.config.database_configuration[Rails.env]
    )

end

当前数据库池大小是多少?您可以同时与您的webapp交互的最大用户数是多少?你在使用unicorn吗?你的问题不是DB配置,而是线程没有释放连接。正如上面Rustem所问的,有多少请求同时命中了您的应用程序?不过,您暂时可以使用
pgbouncer