MongoDB cursor.maxTimeMS为什么不起作用?

问题描述 投票:2回答:1

也许我丢失了一些东西,但是根据文档和所有在线帖子,设置

cursor.maxTimeMS(1000).toArray(...)

应该在1000毫秒后超时,并且MongoDB应该在超时后终止该操作。

但是这些都没有发生。

首先,没有超时。它继续前进。

[其次,我检查db.currentOp(),并且操作仍然存在,耗尽了所有内存。稍后会加起来,并使用OOM使数据库崩溃。

几分钟后无响应后仍然运行db.currentOp()

{
  "inprog" : [
    {
        "host" : "db2:27017",
        "desc" : "conn20",
        "connectionId" : 20,
        "client" : "127.0.0.1:59214",
        "clientMetadata" : {
            "driver" : {
                "name" : "nodejs",
                "version" : "3.1.4"
            },
            "os" : {
                "type" : "Linux",
                "name" : "linux",
                "architecture" : "x64",
                "version" : "4.15.0-30-generic"
            },
            "platform" : "Node.js v8.10.0, LE, mongodb-core: 3.1.3"
        },
        "active" : true,
        "currentOpTime" : "2018-09-14T00:10:29.903+0000",
        "opid" : 11056,
        "lsid" : {
            "id" : UUID("78a2d853-30bf-4d6d-a208-0a150d9bf8be"),
            "uid" : BinData(0,"47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=")
        },
        "secs_running" : NumberLong(649),
        "microsecs_running" : NumberLong(649968360),
        "op" : "command",

您可以看到,即使我明确指定了1000ms,它已经运行了649秒。

这里发生了什么?我已经把头发拉了两天了,无法解决。

node.js mongodb mongodb-query
1个回答
0
投票

我遇到了同样的问题,不得不将mongodb驱动程序从3.1.1更新为3.3.5,它的工作原理很像魅力!

© www.soinside.com 2019 - 2024. All rights reserved.