मेरे पास स्रोत को देखने का समय नहीं है, लेकिन यहां कुछ टिप्पणियां दी गई हैं:
<ब्लॉककोट>प्रश्न 1. इतने शक्तिशाली सर्वर के साथ, ऑपरेटिंग सिस्टम एप्लिकेशन को ऐसी मेमोरी प्रदान करने में विफल क्यों होगा (यह एकमात्र एप्लिकेशन चल रहा था)?
क्योंकि Erlang VM ने उपलब्ध फ्री मेमोरी से ज्यादा खपत करने की कोशिश की।
<ब्लॉककोट>प्रश्न 2। एरलांग एमुलेटर आई स्टार्ट को निर्देश दिया जाता है कि वह जितनी भी प्रक्रियाओं की आवश्यकता हो, उतनी प्रक्रियाओं को शुरू करने में सक्षम हो। मान +P 13421779। IsErlang VM इस मेमोरी तक पहुँचने में विफल रहा है या इसे इसकी प्रक्रियाओं में आवंटित करने में विफल रहा है?
नहीं। यदि आप प्रक्रियाओं से बाहर हो गए होते, तो Erlang VM ने ऐसा कहा होता (और VM अभी भी चालू और चल रहा होगा):
=ERROR REPORT==== 18-Aug-2011::10:04:04 ===
Error in process <0.31775.138> with exit value: {system_limit,[{erlang,spawn_link, [erlang,apply,[#Fun<shell.3.130303173>,[]]]},{erlang,spawn_link,1},{shell,get_command,5}, {shell,server_loop,7}]}
<ब्लॉककोट> प्रश्न 3. सोलारिस के लिए, यह एक प्रक्रिया देखता है:ईपीएमडी, शायद हजारों सूक्ष्म धागे युक्त और शुरू करना। सोलारिस को मेरे एप्लिकेशन को कभी भी रोकने में सक्षम होने के लिए कौन सी कॉन्फ़िगरेशन नकल कर सकती है, हालांकि "स्मृति भूख" कितनी भी हो सकती है? स्वैप स्पेस उपलब्ध है 16 जीबी, रैम 20 जीबी, ईमानदारी से, कुछ तो गड़बड़ है।
epmd
एरलांग पोर्ट मैपिंग डीमन है। यह डिस्ट्रीब्यूट एरलांग के प्रबंधन के लिए जिम्मेदार है और इसका आपके व्यक्तिगत एरलांग एप्लिकेशन से कोई लेना-देना नहीं है। आपको जिन प्रक्रियाओं की तलाश करनी चाहिए उनका नाम beam.smp
. होगा सबसे अधिक संभावना। ये Erlang VM आदि की OS मेमोरी खपत को दिखाएंगे।
प्रश्न 4. इन ढेर मेमोरी क्रैश डंप से बचने के लिए मैं एरलांग एमुलेटर में कौन सी कॉन्फ़िगरेशन कर सकता हूं, खासकर जब सर्वर पर सभी मेमोरी की आवश्यकता हो सकती है? अगर एरलांग अभी भी एक साधारण फाइल सिस्टम इंडेक्सर (अच्छी तरह से इसके भारी समवर्ती) को ऐसी मेमोरी आवंटित करने में विफल रहता है तो मैं इस सर्वर पर अधिक मेमोरी खपत करने वाले ऐप्स कैसे चलाऊंगा?
Erlang VM आपकी मशीन में उपलब्ध सभी मेमोरी का उपयोग करने में सक्षम होना चाहिए। हालाँकि, यह इस बात पर निर्भर करता है कि आपका आवेदन कैसे लिखा गया है। मेमोरी लीक होने के कई कारण हो सकते हैं:
- परमाणु तालिका भरना (आप बहुत अधिक अद्वितीय परमाणु बनाते हैं)
- ETS या मैनेशिया टेबल कचरा एकत्रित नहीं हैं (आप पुराने अप्रयुक्त तत्वों को नहीं हटाते हैं)
- प्रक्रियाओं के लिए पर्याप्त स्मृति नहीं है (आप बहुत अधिक प्रक्रियाएं उत्पन्न करते हैं)
- बहुत सारे बायनेरिज़ बनाए गए हैं (आप पुरानी बायनेरिज़ के लिए अप्रयुक्त संदर्भ रख सकते हैं)