Почему не работает MongoDB cursor.maxTimeMS? - PullRequest
0 голосов
/ 14 сентября 2018

Может быть, я что-то упустил, но согласно документации и всем постам онлайн, настройка

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",

Как видите, это продолжалось 649 секунд, хотя я явно указывал 1000 мс.

Что здесь происходит? Я выдергиваю волосы два дня и не могу этого понять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...