[Memory-Management] RabbitMQ स्मृति उपयोग को कम करें



Answers

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

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

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

Question

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

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

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

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

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

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

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

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

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

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

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

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

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

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




Links