मैं निम्नलिखित पैटर्न के साथ एक आवेदन पत्र है रखता है: कि कुछ निष्क्रिय समय के बाद हाइबरनेट में जाने और उनकी स्मृति की खपत के रूप में उम्मीद नीचे चला जाता हैErlang "प्रणाली" स्मृति खंड बढ़ रही
- 2 लंबे प्रक्रियाओं चल
- एन (0 < एन < 100) कार्यकर्ता प्रक्रियाओं है कि कुछ काम करना और हाइबरनेट के दौरान प्रयोग में एक से अधिक 10 सेकंड या समाप्त निष्क्रिय दो घंटे से अधिक
- रात के दौरान, जब कोई गतिविधि नहीं है अगर प्रक्रिया स्मृति जाना लगभग पर वापस वही मूल्य जो एप्लिकेशन शुरू होता था, जिसे के रूप में अपेक्षित किया जाता है, सभी श्रमिकों की मृत्यु हो गई है।
मुद्दा यह है कि "सिस्टम" अनुभाग बढ़ता रहता है (लगभग 1 जीबी/सप्ताह)।
मेरा सवाल यह है कि मैं वहां संग्रहीत किए गए डिबग को कैसे डिबग कर सकता हूं या उस क्षेत्र में स्मृति आवंटित कर रहा हूं और इसे मुक्त नहीं कर रहा हूं।
मैं पहले से ही सूचियों परीक्षण किया है: keysearch/3 और यह, स्मृति रिसाव नहीं लगता है के रूप में है कि केवल देशी बात मैं (कोई बंदरगाहों, कोई ड्राइवरों का उपयोग कर रहा है, कोई NIFs, कोई BIFS, कुछ भी तो नहीं)। Erlang संस्करण R15B03 है। स्मृति() निर्गम (मामूली यातायात, एप्लिकेशन फ़र, 03 पर शुरू):
[{total,378865650},
{processes,100727351},
{processes_used,100489511},
{system,278138299},
{atom,1123505},
{atom_used,1106100},
{binary,4493504},
{code,7960564},
{ets,489944},
{maximum,402598426}]
यह एक 64-बिट सिस्टम है
यहाँ वर्तमान erlang है। जैसा कि आप देख सकते हैं, "सिस्टम" खंड में ~ 270 एमबी है और "प्रक्रियाएं" लगभग 100 एमबी (जो रात के दौरान ~ 16 एमबी तक गिर जाती है) पर होती है।
समान व्यवहार को देखते हुए।मेरा मानना है कि यह पीरियनल कचरा संग्रह का उपयोग कर एरलांग से संबंधित है, लेकिन मैं पुष्टि नहीं कर सकता। –
यदि ऐसा है, तो दोहराया गया erlang: garbage_collect() या garbage_collect (pid) सभी erlang पीआईडी पर इसे ठीक करना चाहिए। यह सब कुछ "process_memory" को मुक्त करना है, कभी भी "सिस्टम" नहीं। यह आईटी में ऐसा एक आम शब्द है जो कुछ दस्तावेज को संग्रहीत करना असंभव बनाता है कि किस प्रकार का डेटा वहां संग्रहीत किया जाता है। इसके अलावा, वैसे, ओएस लगभग 70% अधिक निवासी स्मृति का उपयोग करता है। – AlexP
क्या आप समय-समय पर memsup चला सकते हैं: get_memory_data/0? यह नोड पर सबसे बड़ी Erlang प्रक्रिया के आवंटित बाइट्स की पिड और संख्या दिखाता है। कुछ अंतर्दृष्टि प्रदान कर सकते हैं – Jr0