1

我在具有 1 GB RAM 的服务器上运行带有 Mongoid 数据库后端的 Rails 应用程序。数据库本身位于不同的数据库服务器上。

每当我运行一个遍历某些集合的 rake 任务时,我注意到内存使用量在htop中不断增加,直到服务器变得无响应。

这只发生在以下值时:

identity_map_enabled: true在 mongoid.yml 配置文件中设置。

我正在使用 Mongoid gem 2.4.11。我知道这是一个旧版本,最近的是 4.0。

考虑到系统范围的 ORM 更新是不可行的,有什么办法可以修补现有代码来解决问题?

4

1 回答 1

2

该文档明确指出在 rake 任务等中禁用身份映射。

我创建了这个:

class MongoidUtils
  def self.without_identity_map &block
    if Mongoid.identity_map_enabled
      Mongoid.identity_map_enabled = false
      result = yield
      Mongoid.identity_map_enabled = true
      result
    else
      yield
    end
  end
end

然后以这种方式使用它:

MongoidUtils.without_identity_map do
  #your code here
end
于 2013-09-03T11:33:14.417 回答