首页 > 解决方案 > bson.deserializeObject 对看似简单的查询占用过多 CPU

问题描述

我有一个约 400 个文档的 mongoDB 集合。而且我有一个 REST 方法,现在只返回这个集合上的 .find({}) 查询的结果(我正在使用 mongoose 顺便说一句)。当我尝试以每秒约 40 个请求对该方法进行基准测试时,我发现响应时间很糟糕(约 10 秒),在我分析应用程序后,火焰图看起来像这样

在此处输入图像描述

当查询拉取 20-30 个对象时,性能变得可以容忍,但如果超过 100 个,应用程序就会卡在反序列化结果上。正常吗?我可以对此做些什么吗?

提前致谢。

标签: node.jsmongodbmongoosenode-mongodb-native

解决方案


在猫鼬中使用“精益”方法可能会对您有所帮助。

'lean' 方法告诉 mongoose 不要将对象从 db 转换为 mongoose 模式对象,而是一个普通的 JavaScript 对象,这反过来会提高反序列化速度。

例子

Students.find({name: 'Josh'}).lean().exec((err, docs) => {
     ...
});

另请参阅
http://www.tothenew.com/blog/high-performance-find-query-using-lean-in-mongoose-2/
在 mongoose 中使用精益和回调


推荐阅读