gpt4 book ai didi

mongodb 2.4.1 失败并显示 'process out of memory'

转载 作者:可可西里 更新时间:2023-11-01 09:31:54 24 4
gpt4 key购买 nike

我有以下 mongo 版本

db version v2.4.1    
MongoDB shell version: 2.4.1,

db version v2.2.1-rc1, pdfile version 4.5, 
MongoDB shell version: 2.2.1-rc1

安装在 64 位 windows 7 机器上。

我有一个包含 10001000(1000 万+)条记录的集合,当我使用 V 2.4.1 进行聚合时,它失败并显示以下内容错误:

Fatal error in CALL_AND_RETRY_2
Allocation failed - process out of memory

但是,当我使用 V 2.2.1-rc1 聚合相同的集合时,它工作正常并在大约 1 分钟内给出结果。

正在聚合的集合的示例文档:

{

"_id" : ObjectId("516bdd1c39b10c722792e007"),
"f1" : 10000010,
"f2" : 10000000,
"key" : 0
}

聚合命令:

{$group: {"_id": "$key", total: {$sum: "$f1"}}}

用于填充记录的命令:

for(var i = 10011000; i < 10041000; ++i)
{
db.testp.insert({"f1": i+10, "f2": i, "key": i%1000})
}

最佳答案

你有多少内存?可能是 $group 占用了超过 10% 的可用内存并导致错误吗?请参阅 memory for cumulative operators 上的聚合文档.

编辑 1:

出于兴趣 - 聚合是否在 shell 之外工作?例如从驱动程序中调用它。我看到过类似的 v8 错误,并且当 shell 在 2.4 中更新为 v8 时,有可能是这样。

编辑 2:

如果生成的数组在 shell 中太大,那么也会触发错误:参见 SERVER-8859 .要解决此问题,您可能需要运行多个聚合,可以通过尽早执行 $match 来限制工作集,甚至可以执行 $skip$limit 对结果集进行分页。

我在 mac 上的 2.4.1 上尝试了 10,070,999 个文档的聚合,但没有收到错误

关于mongodb 2.4.1 失败并显示 'process out of memory',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16053491/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com