Hi Kirby,

We have seen exactly the same behaviour.  As a work around we set
optimizeAcknowdlege to false.  I did not run down the root cause, however.
 
-- 
Cheers!

Rick Blair


> From: "Frugia, Kirby A" <[EMAIL PROTECTED]>
> Reply-To: <users@activemq.apache.org>
> Date: Wed, 3 Dec 2008 15:43:30 +0000
> To: "users@activemq.apache.org" <users@activemq.apache.org>
> Conversation: Broker not releasing memory
> Subject: RE: Broker not releasing memory
> 
> This is fairly easy to reproduce if you create one app which sends messages
> quickly and another which consumes the messages and sleeps before ack'ing.
> Once you see broker memory usage going up (through activemq-admin), kill the
> consumer application.  Then run activemq-admin again some time later and
> you'll see the same memorypercentusage.
> 
> Or, let the consumer run the broker out of memory and you'll see the producer
> get blocked.  Kill both apps and you'll never see memory go back down again
> and you'll never be able to send messages again.
> 
> Thanks,
> Kirby
> 
> -----Original Message-----
> From: Will van der Leij [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, December 03, 2008 12:17 AM
> To: users@activemq.apache.org
> Subject: RE: Broker not releasing memory
> 
> 
> Well, I'm reticent to suggest something going on under the hood without
> taking a good look at it, however, if there is something wrong in the broker
> then I presume it has to do with a "sweeper"-like thread that periodically
> cleans up queues and topics that are left pending and consumerless (similar
> to how sweeper threads would clean up expired messages etc.
> 
> Then again, we are the only two that I know of describing this behaviour.
> This suggests that either there is something bizarrely odd about our
> configurations or we are, indeed, correct :)
> 
> 
> 
> Frugia, Kirby A wrote:
>> 
>> Yes, this is exactly what we are seeing.  Any ideas?
>> 
>> -----Original Message-----
>> From: Will van der Leij [mailto:[EMAIL PROTECTED]
>> Sent: Thursday, November 27, 2008 11:42 PM
>> To: users@activemq.apache.org
>> Subject: Re: Broker not releasing memory
>> 
>> 
>> We see similar behaviour in a slightly different setup so I'd like to
>> elaborate a bit in the hope of finding out if this is either intended
>> behaviour or a memory leak.
>> 
>> Essentially, with a single or multiple producers and a single or multiple
>> consumers on a single topic:
>>  - We send messages faster than the consumer can read asynchronously
>>  - When the send queue is larger than the consumer's prefetch buffer then
>>    we correctly see messages filling up the broker memory
>> (memoryPercentUSage in JMX)
>>  - Killing the consumer (cleanly through a close or not-cleanly with a
>> terminate signal)
>>    results in the memoryPercentUsage not being released
>>    - even though there are no more consumers on the Topic
>>    - this memory is never released until the broker is restarted
>> 
>> I've tried it with persistence on and off, all the retroactive recovery
>> options on and off, flow control on and off, caching on and off,
>> asynchronous dispatching on and off, noLocal flag on and off etc.
>> 
>> This is a very typical case of a consumer dying with inflight messages on
>> the broker. Is the behaviour of the messages not being cleaned up or
>> recovered intended (i.e. they are there for a reason) or is there soething
>> wrnog with the setup.
>> 
>> Many thanks
>> Will van der Leij
>> 
>> 
>> 
>> Frugia, Kirby A wrote:
>>> 
>>> Hi All,
>>> 
>>> Sorry I dual-posted in the dev list.  I think I sent to the wrong one...
>>> 
>>> We are seeing an issue with our broker not releasing memory on topics.
>>> 
>>> Setup:
>>> * Active MQ 5.1 (out of the box)
>>> * Persistent messages sent by publishers
>>> * Non-durable topics
>>> 
>>> We were seeing an issue in production with slow consumers causing the
>>> broker to run out of memory.
>>> 
>>> We wrote a test app, which has one publisher and one subscriber to the
>>> same topic.  The publisher sends messages on this topic frequently.  The
>>> subscriber, upon receiving a message, goes to sleep for 10 minutes.
>>> 
>>> Very quickly, the broker runs out of memory.  When this happens, our
>>> publishers can no longer send messages; the send is blocked. This is
>>> expected.  However, if we kill our application (which cleanly disconnects
>>> from the broker), the broker's memory usage (MemoryPercentUsage) does not
>>> go back down.  Also, any new apps that startup will have their publishers
>>> blocked.
>>> 
>>> Shouldn't the broker release the memory associated with these messages?
>>> 
>>> Thanks,
>>> Kirby
>>> 
>>> 
>>> 
>> 
>> --
>> View this message in context:
>> http://www.nabble.com/Broker-not-releasing-memory-tp20662078p20730116.html
>> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>> 
>> 
>> 
> 
> --
> View this message in context:
> http://www.nabble.com/Broker-not-releasing-memory-tp20662078p20808585.html
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
> 

Reply via email to