2012-05-24 15 views
5

मुझे पता है कि वर्तमान प्रक्रिया में स्मृति उपयोग प्राप्त करने के लिए एक api process.memoryUsage() है।node.js में बाल प्रक्रिया मेमोरी उपयोग कैसे प्राप्त करें?

लेकिन अगर मैं child_process.spawn (कमांड, [args], [विकल्प]) द्वारा एक नई बाल प्रक्रिया शुरू करता हूं और मुझे एक चाइल्डप्रोसेस ऑब्जेक्ट मिलता है, तो मैं नई प्रक्रिया मेमोरी उपयोग कैसे प्राप्त कर सकता हूं?

उत्तर

0

ठीक है आप ps का उपयोग कर सकते हैं (/proc/<pid>/stat अंतर्निहित) यदि आप यूनिक्स वातावरण में हैं। यहां एक उदाहरण दिया गया है:

// 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)); 
}); 

यह उबंटू 12.04 और ओएस एक्स शेर के साथ परीक्षण किया जाता है। हालांकि यह नहीं लगता कि यह विंडोज़ में काम करेगा।

1

हम मल्टीप्लाफ्फ़्ट समाधान नोडजेस आईपीसी प्रोटोकॉल का उपयोग कर समाधान प्राप्त कर सकते हैं। आपको केवल मूल प्रक्रिया से मेमोरी उपयोग का अनुरोध करने के लिए ईवेंट सेट अप करने की आवश्यकता है, और उसके बाद उत्पन्न बाल प्रक्रिया से process.memoryUsage() भेजें।

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'); 

और child.js में यह इस

process.on('message', function(msg){ 
    if(msg === 'get_mem_usage'){ 
     process.send({memUsage: process.memoryUsage()}); 
    } 
}); 
कैसा लग सकता है
संबंधित मुद्दे