node.js - bson.deserializeObject 对看似简单的查询占用过多 CPU
问题描述
我有一个约 400 个文档的 mongoDB 集合。而且我有一个 REST 方法,现在只返回这个集合上的 .find({}) 查询的结果(我正在使用 mongoose 顺便说一句)。当我尝试以每秒约 40 个请求对该方法进行基准测试时,我发现响应时间很糟糕(约 10 秒),在我分析应用程序后,火焰图看起来像这样
当查询拉取 20-30 个对象时,性能变得可以容忍,但如果超过 100 个,应用程序就会卡在反序列化结果上。正常吗?我可以对此做些什么吗?
提前致谢。
解决方案
在猫鼬中使用“精益”方法可能会对您有所帮助。
'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 中使用精益和回调
推荐阅读
- javascript - 如何在 rx Javascript 中解开一个可观察的内部 behaviorsubject .next()?
- javascript - 根据数组中的其他值求和值
- python - 字段 'id' 需要一个数字,但得到了 'bidding'
- r - R / Tidyverse:使用重复标签对组内的因子进行排序并使用 facet_wrap 进行绘图
- c# - 站点错误:通过 OpenPop.Net 阅读电子邮件时,“ansi_x3.110-1983”不是受支持的编码名称
- .htaccess - 基于条件时间的 htaccess 重定向
- mapbox - 如何获取矢量图块中样式数据的边界框
- awk - awk - 通过文件嵌套搜索?
- time-series - 时间序列 acf、pacf 和 model_fit 问题
- python - 如何将查询结果格式化为我的扩展字典对象?