繁体   English   中英

慢猫鼬请求

[英]Slow Mongoose Requests

我一直在慢猫鼬查询。 我将范围缩小为Mongoose创建对象的方式或db服务器请求中的实际延迟。 我几乎没有数据库中的任何数据(4个集合中的每个集合中的<1000个对象),并且手动运行了查询(与产品中的查询类似)并对它们进行了概要分析,它们都运行了2-4毫秒。

我无法通过在线搜索/查看文档找出两个大问题:

  1. 我如何获得Mongoose在Mongo上运行的原始查询?
  2. 一次db服务器执行了多少次旅行-例如,如果我在回调函数中有几个填充调用,一个排序调用和一个嵌套的填充调用查询,那么对该服务器进行了多少次旅行。

这是我看到的一些延迟时间:

Login
localhost + localDB = 58ms
localhost + mongoHQ = 127ms
heroku + mongoHQ = 287ms

Get Data
localhost + localDB = 281ms
localhost + mongoHQ = 1657ms
heroku + mongoHQ = 2190ms

更新1

我想出了如何记录查询并检查了其中的一些查询。 我认为它可以归结为一个带有大量填充调用的查询-我注意到在生成查询的填充部分时,Mongoose输出一个Mongo查询,例如:

users.find({ _id: { '$in': [ ObjectId("531ec0e17c0b16a82be4f506"), 
ObjectId("531ec0e17c0b16a82be4f506"), ObjectId("531ec0e17c0b16a82be4f506") ...

其中ID重复多次(在这种情况下为数百次)-我认为这是速度下降的原因,并测试了代码,发现每次填充调用都会使请求时间增加约0.3s-.5s。 填充调用也在数组字段上运行-这还将查询的ID数保持在100到1000(低)(重复)之间。

进行填充呼叫时,是否可以删除重复的条目?

尝试更改查询以使用“精简”选项,然后查看时间是否减少了。 这将绕过猫鼬实体的创建。

http://mongoosejs.com/docs/api.html#query_Query-lean

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM