bson.deserializeObject占用过多的CPU,看似简单的查询

时间:2018-06-05 14:00:30

标签: node.js mongodb mongoose node-mongodb-native

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

enter image description here

当查询类似于20-30个对象时,性能变得可以容忍,但如果它超过100,那么应用程序就会在反序列化结果时遇到困难。这是正常的吗?我能为此做点什么吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

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

'lean'方法告诉猫鼬不要将对象从db转换为猫鼬模式对象,而是将普通的JavaScript对象转换为反序列化速度。

示例

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

另请参阅
http://www.tothenew.com/blog/high-performance-find-query-using-lean-in-mongoose-2/
Use lean in mongoose with callback