मैंने देखा है कि मेरे node.js ऐप का आरएसएस (निवासी सेट साइज) समय के साथ बढ़ रहा है, और मेरे सर्वर पर "जेएस ऑब्जेक्ट आवंटन असफल - आउट ऑफ़ मेमोरी" त्रुटि होने पर विचार कर रहा है, ऐसा लगता है कि ऐसा लगता है कारण।क्या कुछ टोपी तक पहुंचने तक, प्रत्येक अनुरोध के साथ नोड.जेएस 'आरएसएस (निवासी सेट साइज) के लिए बढ़ना सामान्य है?
मैं निम्नलिखित बहुत ही सरल नोड ऐप सेट:
var express = require('express');
var app = express();
app.get('/',function(req,res,next){
res.end(JSON.stringify(process.memoryUsage()));
});
app.listen(8888);
बस नीचे पकड़ "ताज़ा" हॉटकी @ http द्वारा: // स्थानीय होस्ट: 8888/आरएसएस/ढेर/आदि मैं देख सकते हैं। बढ़ो, जब तक आरएसएस 50 एमबी से ऊपर न हो जाए (इससे पहले कि मैं ऊब जाऊं)। कुछ मिनट इंतजार कर रहे हैं और वापस आ रहे हैं, आरएसएस गिरता है - संभवतः जीसी चला गया है।
मैं यह पता लगाने की कोशिश कर रहा हूं कि यह मेरा वास्तविक नोड ऐप क्यों क्रैश हो रहा है ... मेरा उत्पादन ऐप जल्दी से 100 एमबी आरएसएस आकार को हिट करता है, जब यह क्रैश होता है तो यह आम तौर पर 200 एमबी-300 एमबी के बीच होता है। जैसा कि मैं सबसे अच्छा कह सकता हूं, यह बहुत बड़ा नहीं होना चाहिए (नोड 1.7 जीबी को संभालने में सक्षम होना चाहिए या तो, मुझे विश्वास है), लेकिन फिर भी मैं इस तथ्य से चिंतित हूं कि मेरे उत्पादन सर्वर पर आरएसएस आकार ऊपर की ओर बढ़ता है (गिरावट दुर्घटनाओं का प्रतिनिधित्व करते हैं):
जहां तक मुझे पता है कि जब तक स्मृति की आवश्यकता नहीं होती है तब तक ऑपरेटिंग सिस्टम अप्रयुक्त पृष्ठों को बाहर कर देता है, तब तक आप आरएसएस को अपने आप नीचे नहीं देख पाएंगे अगर सिस्टम पर कुछ भी स्मृति के लिए प्रतिस्पर्धा नहीं कर रहा है । – chrixian
शायद आप [कुख्यात वॉलमार्ट मेमोरी लीक] का अनुभव कर रहे हैं (http://www.joyent.com/blog/walmart-node-js-memory-leak), जिसे अब 'v0.10.22' में तय किया गया है। –
मेरे लिए v8 में संग्रहित कचरा का यह व्यवहार सामान्य लगता है – exebook