activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jesús Roncero <>
Subject Re: Understanding memoryLimits with flow control and systemUsage limits.
Date Wed, 05 Jun 2013 23:09:43 GMT
On 05/06/2013 16:57, Christian Posta wrote:
> Sounds like it's happening exactly as you have it configured.. I assume
> you're using non-persistent messages?

Thanks for your help.
Yes, I know it doesn't make sense. I'm working on an existing
configuration which is obviously wrong, and I'm trying to figure
out/understand every single case in the configuration.

I am indeed using non-persistent messages.

> As Johan pointed out, your config kinda doesn't make sense :)
> The <memoryUsage> is an overall broker limit. That is, if you set your
> <memoryUsage limit="40mb"> then you want to keep the aggregate of all of
> your destinations <= 40mb. Therefore, if you have 40 queues, set each one
> to 1mb. Or some other combo that is <= 40mb. In your case you set each
> queue to 50mb (<policyEntry memoryLimit="50mb"...) which doesn't work well.
> As for your questions...

That's what I had thought. I have seen the config in point 3 over the
internet, so I believe this config has been cargoculted from there,
possibly without thinking things through.

> 1) the 50mb limit doesn't kick in (you don't get PFC) because the broker
> has hit the 70% limit and is spooling your messages to disk. in the first
> case, it never hits the 70% mem limit of your destination because it filled
> up (40mb) the broker main memory first

That makes sense to me. That's the 'memory' that I see in the messages?

> 2) it sure is happening :) check the logs for scenario #2... you hit the
> limit on the temp store

But not on the first limit? Or is it that I hit the limits and they get
transferred (the messages) to the temp storage?

> 3) that doesn't make sense. whip up a test case to show that.

I'm kind of sure I've seen this happening. What I believe it happens is
that the broker pays attention to the 500 Mb limit, rather than the 40
Mb limit. Then, what I believe it happens, is that it hits the 70%
watermark (350 Mb) and then it transfer the whole thing in one go to the
temp storage (which is 100 Mb), loading it at 350%. Then ActiveMQ sort
of dies there. It doesn't accept anything else, and if I try to purge
the queue it hangs there forever (it can list the queues on the web
interface though).
I will give run a test tomorrow in the office as now there's been a
blackout in the office and can't access the test server. Will do tomorrow.

Thanks to both of you for the prompt reply!

> hope that helps :)

Yes it does. Thanks again :-)


View raw message