在rails 2.3.18应用程序中创建的数据库连接太多

时间:2013-12-06 07:26:33

标签: ruby-on-rails activerecord heroku connection-pooling rails-postgresql

我们有很多类似下面的模型。

class User < ActiveRecord::Base
 create_connection

  def create_connection  
    # we have used this ActiveRecord::Base.configurations[current_environment] for connection_info 
    self.establish_connection connection_info
  end
end 

在使用许多类似类型的模型之后,正在为远程数据库创建许多数据库连接。因此,我们收到远程Postgres数据库的以下错误消息。

2013-12-04T12:18:28.360740+00:00 app[web.1]:   FATAL:  too many connections for role "ycjcwpowlrmvhi"

实际上我们在heroku上有两个应用程序,每个应用程序都访问另一个应用程序。

执行查询后如何关闭这么多数据库连接?

我们也有时会收到以下错误。

2013-12-06T09:36:27.952787+00:00 app[web.1]: Processing StaffController#index (for 202.45.6.95 at 2013-12-06 09:36:27) [GET]
2013-12-06T09:36:16.453533+00:00 heroku[router]: at=info method=GET path=/javascripts/application.js?1386322453 host=demomanager.herokuapp.com fwd="202.45.6.95" dyno=web.1 connect=1ms service=3ms status=200 bytes=5025
2013-12-06T09:36:32.935950+00:00 app[web.1]: 
2013-12-06T09:36:32.935950+00:00 app[web.1]: ActiveRecord::StatementInvalid (PG::UnableToSend: SSL error: decryption failed or bad record mac
2013-12-06T09:36:32.935950+00:00 app[web.1]: :             SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull
2013-12-06T09:36:32.935950+00:00 app[web.1]:               FROM pg_attribute a LEFT JOIN pg_attrdef d
2013-12-06T09:36:32.935950+00:00 app[web.1]:                 ON a.attrelid = d.adrelid AND a.attnum = d.adnum
2013-12-06T09:36:32.935950+00:00 app[web.1]:              WHERE a.attrelid = '"tags"'::regclass
2013-12-06T09:36:32.935950+00:00 app[web.1]:                AND a.attnum > 0 AND NOT a.attisdropped
2013-12-06T09:36:32.935950+00:00 app[web.1]:              ORDER BY a.attnum
2013-12-06T09:36:32.935950+00:00 app[web.1]: ):

1 个答案:

答案 0 :(得分:1)

您应该可以通过更改pool中的database.yml参数并降低该值来更改数据库连接数。