我正在研究节点后端尝试通过mongoose优化对mongodb的非常繁重的查询.预期的返回大小是相当大的,但由于某些原因,当我发出请求时,节点开始消耗大量内存,例如200mb +用于单个大请求.
考虑到大多数情况下回报的大小小于10mb,这似乎不对.它在完成后也拒绝放弃内存,我知道这可能只是V8 GC执行其默认行为,但我担心的是单个find()请求消耗的大量内存.
我通过测试find()调用将其隔离了.完成调用后,它会执行一些后处理,然后将数据发送到回调,所有这些都在匿名函数中.我尝试使用querystream而不是model.find(),但它没有显示真正的改进.
环顾四周没有得到任何回应,所以我会问,是否有一种已知的方法来减少,控制或优化猫鼬的内存使用量?有谁知道为什么这么多的内存被用于一次通话?
编辑
根据Johnny和Blakes的建议,使用lean()和流的混合,并使用暂停和恢复,极大地改善了运行时和内存使用.谢谢!