2011-10-04 12 views
5

सिस्टम के आसपास कुछ मदद की तलाश करना प्रयोजन और गंतव्य नीतिगत कॉन्फ़िगरेशन क्योंकि मुझे सिस्टम उपयोग, गंतव्य नीति और प्रवाह नियंत्रण के बीच संबंधों को पूरी तरह से समझने में कुछ कठिनाई हो रही है।ActiveMQ गंतव्य नीति और सिस्टम उपयोग कॉन्फ़िगरेशन

हमारे सभी संदेश लगातार हैं! निर्माता फ्लो कंट्रोल चालू है।

तो हम ActiveMQ को अधिकतम 512 एमबी ढेर स्पेस देते हैं।

हमारे systemUsage नीचे के रूप में सेट किया गया है:

<systemUsage> 
    <systemUsage> 
     <memoryUsage> 
      <memoryUsage limit="200 mb"/> 
     </memoryUsage> 
     <storeUsage> 
      <storeUsage limit="10 gb"/> 
     </storeUsage> 
     <tempUsage> 
      <tempUsage limit="1000 mb"/> 
     </tempUsage> 
    </systemUsage> 
</systemUsage> 

हमारे गंतव्य के रूप में नीचे दी गई नीति:

<destinationPolicy> 
    <policyMap> 
     <policyEntries> 
     <policyEntry topic=">" producerFlowControl="true" memoryLimit="1mb"> 
      <pendingSubscriberPolicy> 
      </pendingSubscriberPolicy> 
     </policyEntry> 
     <policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb"> 
     </policyEntry> 
     </policyEntries> 
    </policyMap> 
</destinationPolicy> 

किसी को सत्यापित कर सकते हैं यदि निम्न सही है:

कि इसका मतलब यह है प्रत्येक के लिए व्यक्तिगत कतार/विषय स्मृति सीमा 1 एमबी है। यह 1 एमबी हिट होने पर वास्तव में क्या होता है, क्या उत्पादकों के लिए कतार ब्लॉक होता है या यह डिस्क पर पेज करता है?

सभी कतारों और विषयों के लिए कुल अनुमत स्मृति 200 एमबी है। इसका मतलब है कि हम 200 चैनलों को 1 एमबी की पूर्ण क्षमता पर संचालित कर सकते हैं। वर्तमान में हमारे पास कुल 16 कतार और विषय हैं जो स्पष्ट रूप से कभी नहीं पहुंच पाए हैं।

क्या हम स्मृति सीमा पर व्यक्तिगत नीति प्रविष्टि को हटाने और विभिन्न चैनलों के बीच स्मृति साझा करने के लिए बेहतर हैं?

यदि हम ऐसा करते हैं तो वे किस बिंदु पर ब्लॉक करेंगे?

किसी भी मदद की बहुत सराहना की! आप कुछ बीयर पैसे पेपैल कर सकते हैं!

उत्तर

6

आप यहां कई बिंदुओं पर छू रहे हैं, जिन्हें मैं आदेश से बाहर कर दूंगा।

memoryUsage इन-मेमोरी स्टोर को आवंटित स्मृति की मात्रा से मेल खाता है। स्टोर यूज काहदाब स्टोर को कितनी जगह दी जानी चाहिए। आप या तो अपने दलाल को संदेशों को जारी रखने के लिए या नहीं, इस पर निर्भर करते हुए आप एक या दूसरे का उपयोग करते हैं। tempUsage फ़ाइल कर्सर (http://activemq.apache.org/message-cursors.html) के लिए एक विशेष मामला है - मेमोरी सीमा पार होने पर स्मृति में इन-मेमोरी स्टोर से मेमोरी को ओवरफ़्लो करने के लिए एक तंत्र (आपको करना होगा यदि आप इसे चाहते हैं तो गंतव्य स्तर पर इस व्यवहार को कॉन्फ़िगर करें)।

policyEntry @ memoryLimit व्यक्तिगत स्थलों के लिए एक उप-सीमा है।

स्मृति सीमा पार होने पर क्या होता है इस पर निर्भर करता है कि निर्माता प्रवाह नियंत्रण (पीएफसी) चालू है या नहीं। यह कतारों के लिए डिफ़ॉल्ट रूप से चालू है, विषयों के लिए बंद है और एसिंक्रोनस कतार भेजता है; यह सब पॉलिसी एंटर्री (http://activemq.apache.org/per-destination-policies.html) में कॉन्फ़िगर किया जा सकता है।

यदि आप पीएफसी चालू होने पर "मेमोरी सीमा" दबाते हैं, तो आपके ग्राहक तब तक ब्लॉक करेंगे जब तक कि स्टोर से संदेशों को खपत करके कोई स्थान खाली नहीं हो जाता। यदि यह बंद है, तो प्रेषण एक अपवाद फेंक देगा (ब्रोकर की तुलना में ग्राहक बेहतर हो जाएगा)। "मेमोरी सीमा" का मतलब है या तो सभी कतारों में स्मृति उपयोग द्वारा परिभाषित किया गया है, या कतार-विशिष्ट सीमा (बाद वाले से पहले पूर्व को मारना संभव है)।

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

+0

एक नोट के रूप में, यदि आप स्मृति सीमा तक पहुंचते हैं तो कतार भी उपभोक्ताओं को लेनदेन करने के लिए "खाली" दिखाई देती है, जब तक कि कोई और स्थान खाली न हो जाए। साथ ही - कर्सर केवल मूल रूप से उपयोगी होते हैं "यदि आप स्मृति से बाहर निकलते हैं तो निरंतर संदेशों की दुकान", क्या यह सही है? – rogerdpack

संबंधित मुद्दे