Thanks Gary. So lemme toss some actual config numbers out there and please tell me if this makes any sense...or if I'm shooting myself in the foot somehow:
Destinations: - 1 queue with very heavy use, say 50 million messages per day - 1 queue with very light use, say up to 500 messages per day - 2 topics with very light use, say up to 500 messages per day ACTIVEMQ_OPTS="-Xmx3072M ..." (so 3gb heap) My attempt to account for pretty light topic use: <policyEntry topic=">" producerFlowControl="false" memoryLimit="64mb"> My attempt to account for heavier queue use: <policyEntry queue=">" producerFlowControl="false" memoryLimit="1024mb"> And then I'll uncomment the <systemUsage> section and do this...you had said 70% of heap, so if heap is 3gb, let's just say 2gb... <systemUsage> <systemUsage> <memoryUsage> <memoryUsage limit="2048 mb"/> </memoryUsage> </systemUsage> </systemUsage> What do you make of all of this? Does it look like I have a clue? Cuz I don't feel like I do... :-) I'm guessing message size may be more critical to sizing the memoryLimit parameters, but I still don't fully understand what memoryLimit *IS* exactly. Is that a per-queue and/or per-topic limit of how much memory can be allocated to any given destination of the respective type (queue or topic)? Is there a way to allocate a specific memoryLimit to individual specific queues & topics? That would probably be smarter in my case if such a thing is available. Sorry to blast more questions at you...I'd just like to have a better understanding. Thanks! Dan Gary Tully wrote: > > On 2 April 2010 12:30, dcheckoway <dchecko...@gmail.com> wrote: >> be explicit, can I safely set <memoryUsage limit="2 gb"/> ? If not, >> what's >> a recommended setting given -Xmx2048M? >> >> No, there are some hardcoded defaults for systemUsage think default for > memory is 64MB. > You need to take into account the expected number of destinations and > connections and producers/consumers as these will require memory. > Something like 70% of available heap is a reasonable initial gestimate. > > >> 2. On <policyEntry>, what exactly does "memoryLimit" do? I have >> producerFlowControl="false", and I wasn't sure if memoryLimit only >> applies >> when producer flow control is enabled, or what? >> > > That limits the amount of memory consumed by messages on that destination. > When that limit is reached, enqueues block unless systemUsage limits are > reached and message are spooled to disk. With producerFlowControl, the > producer is blocked rather than the destination in the broker. > >> >> 3. What happens if you set the <policyEntry> elements' memoryLimit to the >> same size as your heap and/or <memoryUsage limit>? >> > > that destination can block all other destinations by consuming all of the > memory resources. > > >> I'd like to understand the interaction of all of these factors. Any info >> you can provide would be MUCH appreciated!!! >> >> Thanks, >> Dan >> -- >> View this message in context: >> http://old.nabble.com/Help-understanding-memory-usage-limits-tp28118112p28118112.html >> Sent from the ActiveMQ - User mailing list archive at Nabble.com. >> >> > > > -- > http://blog.garytully.com > > Open Source Integration > http://fusesource.com > > -- View this message in context: http://old.nabble.com/Help-understanding-memory-usage-limits-tp28118112p28120846.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.