2012-05-24 33 views
5

Sé que hay una api process.memoryUsage() para obtener el uso de la memoria en el proceso actual.cómo obtener un proceso de memoria hijo en node.js?

Pero si empiezo un nuevo proceso hijo por child_process.spawn (comando, [args], [opciones]) y obtengo un objeto ChildProcess, ¿cómo puedo obtener el nuevo uso de memoria de proceso?

Respuesta

0

Bueno, puede usar ps (utiliza /proc/<pid>/stat subyacente) si se encuentra en un entorno unix. Aquí hay un ejemplo:

// Spawn a node process 
var child_process = require('child_process'); 
var child = child_process.spawn('node'); 

// Now get its pid. 
child_process.exec('ps -p' + child.pid + ' -o vsize=', function (err, stdout, stderr) { 
    err = err || stderr; 
    if (err) { 
     return console.log('BAD Luck buddy: ', err); 
    } 
    console.log('YOU\'ve done it', parseInt(stdout, 10)); 
}); 

Esto se prueba con ubuntu 12.04 y OS X lion. Aunque no creo que funcione en Windows.

1

Podemos obtener multiplataforma solución con el uso del protocolo nodejs ipc. solo necesita configurar el evento para solicitar uso de memoria desde el proceso principal y luego enviar process.memoryUsage() desde el proceso hijo generado.

parent.js

var ChildProcess = require('child_process'), 
    child = ChildProcess.fork('./child.js'); 

child.on('message', function(payload){ 
    console.log(payload.memUsage); 
}); 

child.send('get_mem_usage'); 

y en child.js que podría tener este aspecto

process.on('message', function(msg){ 
    if(msg === 'get_mem_usage'){ 
     process.send({memUsage: process.memoryUsage()}); 
    } 
}); 
Cuestiones relacionadas