【发布时间】:2019-01-02 17:35:17
【问题描述】:
我正在使用本机 Node JS 驱动程序 (v. 3.0.10) 在 Mongo 3.6.6(在小型 Mongo Atlas 集群上,未分片)上运行
我的代码如下所示:
const records = await collection.find({
userId: ObjectId(userId),
status: 'completed',
lastUpdated: {
$exists: true,
$gte: '2018-06-10T21:24:12.000Z'
}
}).toArray();
我偶尔会看到此错误:
{
"name": "MongoError",
"message": "cursor id 16621292331349 not found",
"ok": 0,
"errmsg": "cursor id 16621292331349 not found",
"code": 43,
"codeName": "CursorNotFound",
"operationTime": "6581469650867978275",
"$clusterTime": {
"clusterTime": "6581469650867978275",
"signature": {
"hash": "aWuGeAxOib4XWr1AOoowQL8yBmQ=",
"keyId": "6547661618229018626"
}
}
}
最多返回几百条记录的查询会发生这种情况。每条记录有几百个字节。
我在网上查找了可能是什么问题,但what 中的most 我found 正在谈论需要超过 10 分钟才能完成的非常大的操作的游标超时。我无法从我的日志中准确判断失败的查询花费了多长时间,但最多只有两秒(可能比这短得多)。
我测试了使用与出错的查询相同的值运行查询,explain 的执行时间仅为几毫秒:
"executionStats" : {
"executionSuccess" : true,
"nReturned" : NumberInt(248),
"executionTimeMillis" : NumberInt(3),
"totalKeysExamined" : NumberInt(741),
"totalDocsExamined" : NumberInt(741),
"executionStages" : {...}
},
"allPlansExecution" : []
]
}
有什么想法吗?间歇性网络延迟会导致此错误吗?我将如何减轻这种情况?谢谢
【问题讨论】:
-
你在用猫鼬吗?
-
不,不使用猫鼬
-
请注意,如果您使用的是 Atlas,您可以单击左侧的
Support按钮查看问题。您使用的是哪个 Atlas 层? -
您是否尝试过从本地计算机 ping 主节点主机名?也许是网络。
-
有些人遇到这种情况是因为节点进程不堪重负,无法全部及时服务。 jira.mongodb.org/browse/NODE-844。还有要检查的东西