[Memory-management] RabbitMQ मेमरी उपयोग को कम करें


Answers

एक उपयुक्त क्यूओएस प्रीफाच मान सेट करना सुनिश्चित करें डिफ़ॉल्ट रूप से, यदि कोई क्लाइंट है, तो खरगोश सर्वर उस क्लाइंट की उस कतार के लिए किसी भी संदेश को भेज देगा यह क्लाइंट और सर्वर पर व्यापक मेमोरी उपयोग में है।

Prefetch की सीमा को कुछ उचित समझे, जैसे कि 100 कहते हैं, और खरगोश सर्वर पर डिस्क पर शेष संदेश रखेगा, जब तक ग्राहक वास्तव में उन पर कार्रवाई करने के लिए तैयार न हो जाए, और आपकी मेमोरी उपयोग क्लाइंट और सर्वर।

ध्यान दें कि 100 का सुझाव शुरू करने के लिए सिर्फ एक उचित स्थान है - यह सुनिश्चित करता है कि अनंत को धड़कता है। वास्तव में उस नंबर को अनुकूलित करने के लिए, आप अपने ग्राहक को संसाधित करने में समर्थ हैं, आपके नेटवर्क की विलंबता, और आपके संदेश का औसत औसत पर कितना बड़ा है, इस संदेश को ध्यान में रखना चाहेंगे

Question

मैं NGBx और कुछ अन्य कार्यक्रमों के साथ एक छोटे से वीपीएस (512 एमबी रैम) पर RabbitMQ चलाने की कोशिश कर रहा हूं। मैं कठिनाई के बिना बाकी सब के मेमोरी उपयोग को ज़्यादा करने में सक्षम हूं, लेकिन मुझे लगता है कि किसी भी कम रैम का उपयोग करने के लिए RabbitMQ नहीं मिल सकता है।

मुझे लगता है कि मुझे Erlang RabbitMQ के लिए उपयोग किए गए धागे की संख्या को कम करने की आवश्यकता है, लेकिन मैं इसे काम करने में सक्षम नहीं हूं। मैंने भी vm_memory_high_watermark को डिफ़ॉल्ट (40%) के नीचे कुछ अलग मानों पर सेट करने का vm_memory_high_watermark किया है, यहां तक ​​कि कम से कम 5%।

समस्या का एक हिस्सा यह हो सकता है कि वीपीएस प्रदाता (मीडियाटेम्पल) मुझे मेरी आवंटित स्मृति पर जाने की इजाजत देता है, इसलिए जब मुफ्त या ऊपर का उपयोग किया जाता है, तो यह दर्शाता है कि सर्वर में लगभग 900 एमबी है

किसी भी सुझाव को RabbitMQ द्वारा मेमोरी उपयोग को कम करने के लिए, या Erlang की थ्रेड्स की संख्या को सीमित कर दें? मेरा मानना ​​है कि एर्लंग 30 सूत्रों का उपयोग कर रहा है, जो कि एआर 30 फ़्लैग पर आधारित है जो मैंने प्रक्रिया कमांड पर देखा है।

आदर्श रूप में मैं RabbitMQ मेम उपयोग 100 एमबी के नीचे होना चाहता हूँ

संपादित करें:

vm_memory_high_watermark 5% (या कॉन्फ़िग फाइल में 0.05) पर सेट के साथ, RabbitMQ लॉग रिपोर्ट करता है कि RabbitMQ की स्मृति सीमा 51mb पर सेट है मुझे यकीन नहीं है कि 51 एमबी कहाँ से आ रही है। वर्तमान वीपीएस आवंटित मेमोरी 924 एमबी है, इसलिए इसका 5% लगभग 46 एमबी होना चाहिए।

RabbitMQ को शुरू करने से पहले htop / free के अनुसार, मैं इस्तेमाल किया राम के आसपास 453mb बैठे, और RabbitMQ शुरू करने के बाद मैं 650mb आसपास हूँ करीब 200 मेगावाट की वृद्धि क्या यह हो सकता है कि 200 एमबी कम सीमा है जो कि खरगोश एमक्यू के साथ चलेगी?

2 संपादित करें

यहां कुछ स्क्रीनशॉट्स ps aux और RabbitMQ को शुरू करने से पहले और जब रेबिटएमक शुरू हो जाने पर मेमोरी स्पाइक दिखाते हैं तो एक ग्राफ़ होता है।

3 संपादित करें

मैंने भी कोई प्लग इन सक्षम नहीं के साथ की जाँच की, और यह बहुत कम अंतर बना दिया ऐसा लगता है कि मेरे पास प्लगइन्स (प्रबंधन और इसकी अनिवार्यताएं) केवल 8 एमबी रैम उपयोग के बारे में जोड़ा गया था

4 संपादित करें

मैं अब इस सर्वर के साथ परीक्षण करने के लिए नहीं है, हालांकि, वहाँ एक conf सेटिंग delegate_count जो 16 के डिफ़ॉल्ट पर सेट है। जहाँ तक मुझे पता है, यह खरगोश के लिए 16 sup-procs का उत्पादन करता है। छोटे सर्वर पर इस नंबर को कम करने से मेमोरी पदचिह्न को कम करने में मदद मिल सकती है। यह वास्तव में काम करता है, या यह प्रदर्शन कैसे प्रभावित करता है, लेकिन यह कोशिश करने के लिए कुछ नहीं है, तो पता नहीं