Узел process.memoryUsage указывает на высокий внешний компонент - PullRequest
0 голосов
/ 18 января 2019

У меня есть процесс узла, где каждые 5 секунд я выдаю MongoDb для поиска и отправки в среднем 150+ запросов за раз. Подвергнутая коллекция имеет 2702823 документов. Когда я консоль зарегистрировал разницу во времени между моментом непосредственно перед bulk.execute и затем внутри обратного вызова, как показано ниже ..

      let time1,time2;     
      time1 = Date.now();

      bulk.execute(function (err) {
        if (err) {
          console.log(err);
        }
        time2 = Date.now();
        let timeDiff = time2-time1;
        if(timeDiff>300000||timeDiff<30000){ //5 minutes or 30 seconds
          console.error(`It took ${timeDiff} for bulk execution for queue type ${modelType}\n`);
          console.error(`The debug object is ${JSON.stringify(debugLogObject,null,2)}`);
        }
      });
    }
  },

Я получил логи запросов за несколько часов. Максимальный timeDiff был около 11 часов.

Как вы можете догадаться, все это было сделано для обнаружения утечки памяти в процессе моего узла. В настоящее время я регистрирую свой process.memoryUsage () каждые 15 минут, и для этого процесса я вижу тенденции, как показано ниже.

"Новости": 546, "heapTotal": 404, "heapUsed": 242, "внешний": 101, "Время": 1547713953467 "Новости": 565, "heapTotal": 422, "heapUsed": 234, "внешние": 110, "Время": 1547714853469 "Новости": 584, "heapTotal": 440, "heapUsed": 255, "внешние": 122, "Время": 1547715753469 "Новости": 615, "heapTotal": 460, "heapUsed": 281, "внешние": 134, "Время": 1547716653471 "Новости": 639, "heapTotal": 480, "heapUsed": 282, "внешние": 135, "Время": 1547717553472 "Новости": 674, "heapTotal": 506, "heapUsed": 299, "внешние": 145, "Время": 1547718453473 "Новости": 711, "heapTotal": 531, "heapUsed": 304, "внешние": 159, "Время": 1547719353473 "Новости": 746, "heapTotal": 555, "heapUsed": 341, "внешние": 169, "Время": 1547720253474 "Новости": 769, "heapTotal": 576, "heapUsed": 335, "внешние": 166, "Время": 1547721153476 "Новости": 792, "heapTotal": 597, "heapUsed": 342, "внешние": 153, "Время": 1547722053477 "Новости": 822, "heapTotal": 626, "heapUsed": 380, "внешние": 163, "Время": 1547722953479 "Новости": 838, "heapTotal": 641, "heapUsed": 381, "внешние": 173, "Время": 1547723853480 "Новости": 878, "heapTotal": 670, "heapUsed": 414, "внешние": 184, "Время": 1547724753482 "Новости": 908, "heapTotal": 689, "heapUsed": 391, "внешние": 194, "Время": 1547725653485 "Новости": 932, "heapTotal": 699, "heapUsed": 420, "внешние": 205, "Время": 1547726553486 "Новости": 963, "heapTotal": 721, "heapUsed": 440, "внешние": 217, "Время": 1547727453487 "Новости": 996, "heapTotal": 742, "heapUsed": 452, "внешние": 229, "Время": 1547728353488 "Новости": 1027, "heapTotal": 764, "heapUsed": 482, "внешний": 240, "Время": 1547729253490 "Новости": 1059, "heapTotal": 784, "heapUsed": 484, "внешний": 249, "Время": 1547730153492 "Новости": 1089, "heapTotal": 805, "heapUsed": 517, "внешний": 260, "Время": 1547731053493 "Новости": 1101, "heapTotal": 810, "heapUsed": 516, "внешний": 253, "Время": 1547731953496 "Новости": 1121, "heapTotal": 830, "heapUsed": 537, "внешний": 262, "Время": 1547732853499

Выше приведена только часть общего журнала. Поэтому мне любопытно, что, если обратный вызов занимает так много времени, приведет ли это к увеличению внешней части памяти процесса узла? Будет ли это также привести к увеличению heapTotal и heapUsed.

Любая помощь или комментарии будут оценены! Спасибо

...