我们有很多类似下面的模型。
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]: ):
答案 0 :(得分:1)
您应该可以通过更改pool
中的database.yml
参数并降低该值来更改数据库连接数。