我正在使用mongodb聚合来从大型集合中对文档进行采样 .
https://docs.mongodb.com/manual/reference/operator/aggregation/sample/
连续几次打电话后,我看到mongodb的记忆力上升了,在第12次呼叫后,它突然出现OutOfMemory错误 .
如何判断Mongodb在处理完查询后释放内存?
我正在使用mongodb聚合来从大型集合中对文档进行采样 .
https://docs.mongodb.com/manual/reference/operator/aggregation/sample/
连续几次打电话后,我看到mongodb的记忆力上升了,在第12次呼叫后,它突然出现OutOfMemory错误 .
如何判断Mongodb在处理完查询后释放内存?
3 回答
你问这个的原因是因为你不知道$sample运算符是如何工作的 . 如documentation中所述,
所以我认为您想要获得的随机文档数量大于5% . 你需要的是将
allowDiskUse
设置为True
.您应该将
allowDiskUse
值设置为true
. 例如:你可以阅读更多关于这个here的信息 .
事实证明问题是存储引擎缓存 . 我正在使用EC2实例,导致OOM错误 . 我已经能够通过分配如下的较小缓存大小来解决它: