मेरा ऐप 5 समानांतर डायनोस पर हैरोकू पर चल रहा है और चल रहा है। 25-15/सेकेंड तक 500-1500 रिक/मिनट का निरंतर भार होता है। समस्या यह है कि आरएसएस मेमोरी लगातार बढ़ रही है। जब मेमोरी खतरनाक स्तर तक पहुंच जाती है तो अब मैं मैन्युअल रूप से ऐप को पुनरारंभ कर रहा हूं (1 हेरोकू डिनो द्वारा उपयोग की जाने वाली अधिकतम मेमोरी 512 एमबी है)। मेमोरी चार्ट लग रहा है इस तरह (ऊपरी ग्रे अक्ष 512MB सीमा पर है):herode पर node.js वेब सर्वर - निरंतर स्मृति
लम्हें (चार्ट पर) जब स्मृति जारी किया गया है कर रहे हैं जब मैं एप्लिकेशन को पुन: प्रारंभ कर रहा हूँ।
अजीब बात यह है कि यह तब होता है जब सर्वर पर लगातार लोड होता है। उदाहरण के लिए सर्वर पर 2 मिनट लोड होने पर स्मृति बढ़ जाती है और उसके बाद फिर से नीचे जाती है। तो ऐसा लगता है कि किसी कारण से कचरा कलेक्टर ठीक से काम नहीं कर रहा है (यह सर्वर लोड होने तक कचरा इकट्ठा नहीं कर रहा है और ऐप व्यस्त नहीं है)।
क्या मैं इसके बारे में कुछ भी कर सकता हूं? यह स्मृति रिसाव मुझे लगता है कि क्योंकि स्मृति जब वहाँ एक सर्वर पर कोई बोझ है जारी किया गया है ... नहीं है
क्या मैं अब तक की कोशिश की थी:
- कॉल जीसी मैन्युअल 2 मिनट के अंतराल
- सेटिंग में --मैक्स-पुरानी-अंतरिक्ष-आकार = 300 हालांकि स्मृति 300 एमबी हिट होने पर कुछ भी नहीं होता - यह अभी भी बढ़ रहा है।
शायद अन्य विकल्प भी मदद कर सकते हैं?
नोड संस्करण 0.10.20
मैं नोड memwatch
पैकेज का इस्तेमाल किया और मैं app से ढेर डिफ इकट्ठा करने में कामयाब रहे है:
- http://jsonfiddle.net/auf8d (11 के बीच ढेर diff मिनट, +37 एमबी)
- http://jsonfiddle.net/4nvcd (ढेर 15 मिनट, +50 एमबी के बीच अंतर)
तो मुझे लगता है कि इस प्रकार का रिसाव होना चाहिए। पहले diff से सबसे बड़ी स्मृति परिवर्तन:
...
{
"what": "Array",
"size_bytes": 9320312,
"size": "8.89 mb",
"+": 79086,
"-": 10215
},
...
{
"what": "Closure",
"size_bytes": 2638224,
"size": "2.52 mb",
"+": 36826,
"-": 184
},
{
"what": "Native",
"size_bytes": 21471232,
"size": "20.48 mb",
"+": 546,
"-": 0
},
{
"what": "String",
"size_bytes": 2068264,
"size": "1.97 mb",
"+": 36968,
"-": 1223
},
...
क्या Native
वस्तु (वह 20 MB मेम आवंटित!) है? क्या आप मुझे सलाह दे सकते हैं कि रिसाव के कारण वास्तव में क्या जांच हो रही है?