Hi, just to clarify. In my last post, when I mentioned 'all the pending
messages are in memory', I actually mean uncommitted messages within a
transaction. Again, can someone confirm if this statement (all uncommitted
messages are kept in memory) is true?



aliu wrote:
> 
> The reason I've been trying to figure out these memory limit
> configurations is because we have the following use case:
> 
> I want to be able to send a large amount of data (>2g) to the queue
> without any consumer consuming it for some time, but it seems like active
> mq actually keeps all the pending messages in memory, I just want to
> confirm this observation since this would put a lot of constraint on our
> memory requirement.
> 
> I are using persistent messaging with transactions, with memoryUsage set
> to 1g, when sending over 50mb of data, I get an OutOfMemory error in the
> middle (around 40mb). But when I tried to do a commit with every 3mb of
> data, there was no errors. 
> 
> I just want to confirm whether active mq actually keeps all the pending
> messages in memory.
> 
> Thanks,
> Audrey
> 
> 
> 
> ammulder wrote:
>> 
>> Are you validating the XML just to make sure it's not a syntax error?
>> 
>> I get stuff onto disk with a configuration like this (and a producer
>> sending 1 MB messages):
>> 
>> <destinationPolicy>
>>     <policyMap>
>>         <policyEntries>
>>             <policyEntry queue=">" memoryLimit="50mb"/>
>>             <policyEntry topic=">" memoryLimit="50mb">
>> ...
>> <systemUsage>
>>     <systemUsage>
>>         <memoryUsage>
>>             <memoryUsage limit="20 mb"/>
>>         </memoryUsage>
>> ...
>> 
>> 
>> Thanks,
>>        Aaron
>> 
>> On Tue, Jul 15, 2008 at 10:50 AM, aliu <[EMAIL PROTECTED]> wrote:
>>>
>>> Hi,
>>> Thanks for the quick reply. If I don't want to keep everything in
>>> memory,
>>> and I want to be able to set how much should be stored in memory and if
>>> there are more stuff coming, it'd be spilled out to disk, what
>>> configuration
>>> settings can I use?
>>>
>>> I actually tried setting the destination limits high and the system
>>> limit
>>> low, with the following config:
>>> <policyEntry queue=">" memoryLimit="1 gb"/>
>>> ...
>>> <memoryUsage>
>>>    <memoryUsage limit="30 mb"/>
>>> </memoryUsage>
>>>
>>> When I'm trying to send 50mb worth of data, my producer blocks after
>>> sending
>>> about 30mb of data. And I also tried with destination limits low and
>>> system
>>> limit high, my producer also blocks after sending the lower limit of the
>>> two
>>> settings.
>>>
>>> Just wondering if anyone can give me some advice on what I can set on
>>> how
>>> much to be allowed in memory?
>>>
>>> Thanks in advance.
>>> Audrey
>>>
>>> ammulder wrote:
>>>>
>>>> I am by no means an authority on this, but I'm not sure the store
>>>> usage or temp usage settings are actually used for anything.
>>>>
>>>> I believe you want your memory usage setting to be high enough to hold
>>>> all the traffic you expect to be in memory at once.  I think this is
>>>> e.g. non-persistent messages that have not yet been delivered (regular
>>>> in-flight messages, queues that are backed up, topics with durable
>>>> subscribers who are away, etc.).  There are separate settings that can
>>>> be applied to the memory limit for each destination (or wildcard
>>>> groups of queues/topics, etc.).
>>>>
>>>> If you set the destination limits high and the system limit low, you
>>>> can cause ActiveMQ to start using disk space (as "swap" I guess), but
>>>> I hear that's prone to deadlocks and etc. -- plus it doesn't seem
>>>> bound by the store/temp usage settings.
>>>>
>>>> If you are up against memory limits (due to slow/disconnected
>>>> consumers or whatever), there are various additional considerations
>>>> and configuration options you may want to use.
>>>>
>>>> Thanks,
>>>>       Aaron
>>>>
>>>> On Mon, Jul 14, 2008 at 6:47 PM, aliu <[EMAIL PROTECTED]> wrote:
>>>>>
>>>>> Hi, I am a new user of the ActiveMQ and I was trying to figure out how
>>>>> to
>>>>> tweak different memory settings.
>>>>> I read on the forum that storeUsage controls the maximum size of the
>>>>> AMQMessageStore, and memoryUsage is the maximum amount of memory the
>>>>> broker
>>>>> will use.
>>>>>
>>>>> However, when I ran a test of sending 50,000 messages with 1k for each
>>>>> message, and I've used the following config:
>>>>>         <systemUsage>
>>>>>            <systemUsage>
>>>>>                <memoryUsage>
>>>>>                    <memoryUsage limit="30 mb"/>
>>>>>                </memoryUsage>
>>>>>                <storeUsage>
>>>>>                    <storeUsage limit="1 gb" name="foo"/>
>>>>>                </storeUsage>
>>>>>                <tempUsage>
>>>>>                    <tempUsage limit="1 mb"/>
>>>>>                </tempUsage>
>>>>>            </systemUsage>
>>>>>        </systemUsage>
>>>>>
>>>>> My producer would block after sending about 30mb worth of data, even
>>>>> though
>>>>> I have specified the storeUsage to be big enough to contain all my
>>>>> messages.
>>>>> I thought what it would be is to have 30mb worth of data in memory,
>>>>> then
>>>>> it'll spill over once it exceeds the limit.
>>>>>
>>>>> Can someone please tell me in detail how these settings work together?
>>>>> I
>>>>> am
>>>>> at a loss here.
>>>>>
>>>>> I am using 5.1, persistent messaging with transactions.
>>>>>
>>>>> Thanks in advance.
>>>>> Audrey
>>>>>
>>>>> --
>>>>> View this message in context:
>>>>> http://www.nabble.com/systemUsage-configuration-tp18454843p18454843.html
>>>>> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>> --
>>> View this message in context:
>>> http://www.nabble.com/systemUsage-configuration-tp18454843p18467144.html
>>> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>>>
>>>
>>>
>> 
>> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/systemUsage-configuration-tp18454843p18490842.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to