Node.js - используется память исполняемого приложения (даже после того, как оно было уничтожено). - PullRequest
0 голосов
/ 02 мая 2019

Как я могу взять использование памяти ChildProcess даже после того, как она была уничтожена (в exec обратном вызове)?

Я пытался использовать модуль pidusage, но он работает только при открытии процесса.

Что я на самом деле пробовал:

var proc = exec(execComm,(error, stdout, stderr) => {
    if (error) {
        callback({status: -1, reason:stderr });
    }

    var pidusage = require("pidusage");

    pidusage(proc.pid,function(err,stat){
        console.log(err,stat);
    });

    callback({ status:0, file: out });
});

Но почему pidusage отправляет [Error: No maching pid found]?
Это потому, что этот модуль не может получить информацию о уже закрытом?
И как получить эту информацию в exec обратном вызове?

Ответы [ 2 ]

0 голосов
/ 02 мая 2019

Полагаю, вы могли бы использовать что-то вроде node-heapdump для создания heapdumps в ваших дочерних процессах, которые вы могли бы проверить после факта.

Таким образом, вы также можете иметь несколько дампов, так чтоВы можете проверить использование памяти с течением времени.

0 голосов
/ 02 мая 2019

Тогда вы могли бы привязать помощника к сигналу выхода вашего приложения и считывать использование памяти, но, поскольку gc, вероятно, будет работать в непредсказуемое время, я не уверен, что вы используете из этого.

const ExitHandler = () => { /* your code */ };
process.on( 'exit', ExitHandler.bind( null, { withoutSpace: false } ) );              // on closing
process.on( 'SIGINT', ExitHandler.bind( null, { withoutSpace: true } ) );             // on [ctrl] + [c]
process.on( 'uncaughtException', ExitHandler.bind( null, { withoutSpace: false } ) ); // on uncaught exceptions
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...