我在具有1 GB RAM的服务器上运行带有Mongoid数据库后端的Rails应用程序。 数据库本身位于不同的数据库服务器上。
每当我运行一个迭代某些集合的rake任务时,我注意到RAM使用率在 htop 中不断增加,直到服务器无响应。
只有在值:
时才会发生这种情况 identity_map_enabled: true
在mongoid.yml配置文件中设置。
我正在使用 Mongoid gem 2.4.11 。 我知道它是旧版本,最近版本是4.0。
考虑到系统范围的ORM更新是不可行的,有什么方法可以修补现有代码来解决问题?
答案 0 :(得分:2)
doc明确规定在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