अच्छा ... मैं वापस वर्ग में हूं। मैं इसे अपने जीवन के लिए नहीं समझ सकता।नोड.जेएस "फाटल त्रुटि: जेएस आवंटन विफल - स्मृति से बाहर प्रक्रिया" - एक स्टैक ट्रेस पाने के लिए संभव है?
मैं निम्न त्रुटि हो रही है:
FATAL ERROR: JS Allocation failed - process out of memory
मैं दर्जनों की गणना कर सकता है (हाँ, दर्जनों) बातें मैं इस समस्या के मूल को पाने के लिए कोशिश की है की, लेकिन वास्तव में यह अब तक होगा बहुत ज्यादा।
- मैं केवल यह मेरे उत्पादन सर्वर पर होने प्राप्त कर सकते हैं, और मेरे एप्लिकेशन विशाल और जटिल है, तो यह बहुत मुश्किल को अलग साबित हो रहा है
- यह भी ढेर आकार हालांकि होता है: तो यहाँ प्रमुख बिंदु हैं & आरएसएस आकार दोनों < 200 एमबी है, जो एक समस्या नहीं दिया जाना चाहिए हैं कि मशीनों (अमेज़न बादल, CentOS, m1.large)
मेरे धारणा है कि 2 बिंदु के (क्योंकि है 8Gb रैम है), एक रिसाव शायद कारण नहीं है; बल्कि, ऐसा लगता है कि शायद एक सिंगल ऑब्जेक्ट है जो बहुत बड़ा है। निम्नलिखित धागे इस सिद्धांत का बैक अप लेते हैं :: In Node.js using JSON.stringify results in 'process out of memory' error
मुझे वास्तव में क्या चाहिए, यह पता लगाने का कोई तरीका है कि एप्लिकेशन क्रैश होने पर स्मृति की स्थिति क्या है, या संभवत: फाटाल त्रुटि तक पहुंचने वाला एक स्टैक ट्रेस है।
उपरोक्त मेरी धारणा के आधार पर, 10 मिनट पुराना हीप डंप अपर्याप्त है (क्योंकि वस्तु स्मृति में नहीं रहती थी)।
बस यह सुनिश्चित करना कि मूल आधार शामिल हैं। क्या आप सुनिश्चित हैं कि प्रक्रिया 'ulimit' सेटिंग के साथ चल रही है जिससे यह सभी रैम का उपयोग कर सके? क्या आप जानते हैं कि ऐप में क्या चल रहा है जो एक ऑब्जेक्ट इतना बड़ा बना सकता है? ऐसा लगता है कि ऐप <200 एमबी रैम का उपयोग नहीं कर रहा है, तो एक भी घटना अचानक एक अतिरिक्त 7.8 जीबी समाप्त हो जाती है। –
@ पीटर लियोन ulimit 1024 (डिफ़ॉल्ट) पर है। बीटीडब्ल्यू, सॉकेट/फाइलों के साथ नहीं करना चाहिए, रैम नहीं? वैसे भी, यह कहना मुश्किल है कि वस्तु को इतना बड़ा बना सकता है; यह इस समस्या के रहस्य का हिस्सा है। मैं अनुमान लगा रहा हूं कि एक (या अधिक) उपयोगकर्ताओं के पास उनके खाते में कुछ ऐसा है जो अद्वितीय है जिसे मैंने भविष्यवाणी नहीं की थी या ठीक से कैप नहीं किया था, लेकिन मैं यह अनुमान लगाने शुरू भी नहीं कर सकता कि कहां/क्या है। जैसा कि मैंने कहा, यह एक बहुत बड़ा आवेदन है। –
ulimit खुले फाइलों, मेमोरी, सीपीयू, प्रक्रियाओं आदि सहित कई संसाधनों को नियंत्रित कर सकता है। विशेष रूप से 'ulimit -m' और' ulimit -d' देखें http://ss64.com/bash/ulimit.html। यह और यथार्थवादी लगता है कि स्मृति उपयोग 7 जीबी से 1 जीबी तक बढ़ रहा है। मुझे लगता है कि मेरी अगली पंक्ति जांच एप की सेवा करने का सबसे बड़ा अनुरोध होगा। क्या ग्राहक बड़े अपलोड स्ट्रीम कर रहे हैं? क्या कई समवर्ती ग्राहक कई अनुरोधों में भेज रहे हैं? कम से कम आप कोडबेस में उन सुरागों का पालन कर सकते हैं और अतिरिक्त लॉगिंग उपकरण जोड़ सकते हैं। –