iterate actually does a dispatch. when consumers change etc, we again try and dispatch to ensure prefetch buffers are maintained.
Do a svn up to r834579 as I committed a fix to trunk for this today resolving https://issues.apache.org/activemq/browse/AMQ-2481 2009/11/10 afei <afei1...@126.com>: > > in org.apache.activemq.broker.region ,why so many invoke asyncWakeup(), > what is the method:iterate() doing? > > > afei wrote: >> >> in addition,another problem of OOM. >> >> >> >> Gary Tully wrote: >>> >>> fyi: you can disable periodic message expiry processing using a >>> destination policy entry that sets expireMessagesPeriod = 0 >>> >>> 2009/11/9 afei <afei1...@126.com>: >>>> >>>> >>>> when a large of messages in queue,and no consumer or the consumer is >>>> very >>>> slow, the OOM problem occur, because : >>>> in org.apache.activemq.broker.region.Queue,the 588 line is : >>>> doBrowse(true, browsedMessages, this.getMaxExpirePageSize()); >>>> ,transform to : >>>> doBrowse(false, browsedMessages, this.getMaxExpirePageSize()); >>>> is ok. >>>> >>>> >>>> Dejan Bosanac wrote: >>>>> >>>>> Hi Mitch, >>>>> >>>>> yeah, I said in thread I was referring to, that it is working with >>>>> "regular" >>>>> stomp connector. I started investigating AMQ-2440 patch the other day, >>>>> should be have something soon. >>>>> >>>>> Cheers >>>>> -- >>>>> Dejan Bosanac - http://twitter.com/dejanb >>>>> >>>>> Open Source Integration - http://fusesource.com/ >>>>> ActiveMQ in Action - http://www.manning.com/snyder/ >>>>> Blog - http://www.nighttale.net >>>>> >>>>> >>>>> On Wed, Oct 28, 2009 at 6:18 PM, Mitch Granger >>>>> <mitch.gran...@sophos.com>wrote: >>>>> >>>>>> So we turned off stomp+nio and went back to plain old stomp and so far >>>>>> it's >>>>>> working fine. New(IO) isn't always better, I guess :-) >>>>>> >>>>>> Seems like maybe it's this issue -> >>>>>> https://issues.apache.org/activemq/browse/AMQ-2440 >>>>>> >>>>>> >>>>>> afei wrote: >>>>>> >>>>>>> i have same problem >>>>>>> >>>>>>> http://www.nabble.com/file/p26093204/aaaaaa.jpg aaaaaa.jpg >>>>>>> >>>>>>> >>>>>>> themitchy wrote: >>>>>>> >>>>>>>> This is what we've done to tune so far: >>>>>>>> >>>>>>>> - UseDedicatedTaskRunner=false >>>>>>>> - flow control is off >>>>>>>> - stomp transport uses transport.closeAsync=false >>>>>>>> >>>>>>>> I agree that it is because of the high number of open/close >>>>>>>> connections >>>>>>>> from Stomp. When we monitor through JConsole we can see more >>>>>>>> threads >>>>>>>> starting up for each new connection. The problem is that these >>>>>>>> threads >>>>>>>> don't get let go. Even though the stomp clients are disconnecting >>>>>>>> the >>>>>>>> number of threads that get released is less than the number created. >>>>>>>> So >>>>>>>> the thread count goes up and up until it fails. All of the above >>>>>>>> settings/tuning only delay when it will hit the wall. >>>>>>>> >>>>>>>> Dejan Bosanac wrote: >>>>>>>> >>>>>>>>> Hi Mitch, >>>>>>>>> >>>>>>>>> I think the root cause of this problem is that you probably have >>>>>>>>> Stomp >>>>>>>>> clients that open/close connection at a high rate. I simulated this >>>>>>>>> problem >>>>>>>>> on OSX with a StompLoadTest ( >>>>>>>>> >>>>>>>>> http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/transport/stomp/StompLoadTest.java?view=log >>>>>>>>> ), >>>>>>>>> while trying to reproduce "too many open files" problem. You can >>>>>>>>> find >>>>>>>>> some >>>>>>>>> of my findings (and workaround) in this thread. >>>>>>>>> >>>>>>>>> >>>>>>>>> http://www.nabble.com/%22too-many-open-files%22-error-with-5.3-and-Stomp-tt25888831.html#a26010080 >>>>>>>>> >>>>>>>>> (BTW. it is producing "too many open files" problem on linux) >>>>>>>>> Basically, >>>>>>>>> the >>>>>>>>> problem with stomp is that every send is done in separate >>>>>>>>> connection >>>>>>>>> and >>>>>>>>> thus considered to be a new producer for every message. So when >>>>>>>>> producer >>>>>>>>> flow control is hit, the producers are piling up and probably not >>>>>>>>> releasing >>>>>>>>> connections. Thus you can observe large number of tcp connections >>>>>>>>> on >>>>>>>>> the >>>>>>>>> system in state TIME_WAIT (and TIME_CLOSE), which causes that the >>>>>>>>> system >>>>>>>>> limit is hit at one point. In the above thread, you can find a >>>>>>>>> workaround >>>>>>>>> that worked for me for that test. I started investigating this more >>>>>>>>> and >>>>>>>>> hopefully I'll have some more findings in the near future. >>>>>>>>> >>>>>>>>> Cheers >>>>>>>>> -- >>>>>>>>> Dejan Bosanac - http://twitter.com/dejanb >>>>>>>>> >>>>>>>>> Open Source Integration - http://fusesource.com/ >>>>>>>>> ActiveMQ in Action - http://www.manning.com/snyder/ >>>>>>>>> Blog - http://www.nighttale.net >>>>>>>>> >>>>>>>>> >>>>>>>>> On Tue, Oct 27, 2009 at 1:07 AM, Mitch Granger >>>>>>>>> <mitch.gran...@sophos.com>wrote: >>>>>>>>> >>>>>>>>> Update: We've [nearly] proven that this only happens with AMQ >>>>>>>>> running >>>>>>>>>> on >>>>>>>>>> openVZ. What exactly is causing it, we're still not sure. After >>>>>>>>>> memoryUsage is met, the number of threads skyrockets until we get >>>>>>>>>> OutOfMemoryError. >>>>>>>>>> >>>>>>>>>> It works just fine on regular hardware; We're going to try VMWare >>>>>>>>>> tomorrow. >>>>>>>>>> >>>>>>>>>> One thing really worth mentioning is that by using the fileCursor >>>>>>>>>> we >>>>>>>>>> actually started seeing it use the Temp Store. When reading about >>>>>>>>>> systemUsage it is NOT intuitive that the Temp Store does not come >>>>>>>>>> into >>>>>>>>>> play >>>>>>>>>> with the default cursor. Anyone keeping a significant volume of >>>>>>>>>> messages on >>>>>>>>>> their queues should be well served by changing the cursor. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Mitch Granger wrote: >>>>>>>>>> >>>>>>>>>> Config is attached. We have also tried the >>>>>>>>>> activemq-scalability.xml >>>>>>>>>>> with >>>>>>>>>>> the only change being adding a stomp connector. >>>>>>>>>>> >>>>>>>>>>> Once we hit the memoryUsage limit we can [sometimes] connect new >>>>>>>>>>> consumers >>>>>>>>>>> but nothing comes back after we send the SUBSCRIBE frame. >>>>>>>>>>> >>>>>>>>>>> I expect sending to fail when we hit this limit but if we can't >>>>>>>>>>> subscribe >>>>>>>>>>> there's no chance of recovering from this state. >>>>>>>>>>> >>>>>>>>>>> Rob Davies wrote: >>>>>>>>>>> >>>>>>>>>>> On 26 Oct 2009, at 17:38, themitchy wrote: >>>>>>>>>>>> >>>>>>>>>>>> We're using only persistent messages and heap size is set to >>>>>>>>>>>> 2GB >>>>>>>>>>>> yet >>>>>>>>>>>> we >>>>>>>>>>>> >>>>>>>>>>>>> hit >>>>>>>>>>>>> the memoryUsage limit quite quickly (system usage config >>>>>>>>>>>>> below). >>>>>>>>>>>>> This >>>>>>>>>>>>> is >>>>>>>>>>>>> followed by "java.lang.OutOfMemoryError: unable to create new >>>>>>>>>>>>> native >>>>>>>>>>>>> thread" >>>>>>>>>>>>> as the process quickly reaches the 2GB of heap we gave it. How >>>>>>>>>>>>> are >>>>>>>>>>>>> we >>>>>>>>>>>>> getting to that point with the memoryUsage limit set far below >>>>>>>>>>>>> it? >>>>>>>>>>>>> >>>>>>>>>>>>> Is there no way to get AMQ to gracefully limit it's memory >>>>>>>>>>>>> usage? >>>>>>>>>>>>> >>>>>>>>>>>>> <systemUsage> >>>>>>>>>>>>> <systemUsage> >>>>>>>>>>>>> <memoryUsage> >>>>>>>>>>>>> <memoryUsage limit="256 mb"/> >>>>>>>>>>>>> </memoryUsage> >>>>>>>>>>>>> <storeUsage> >>>>>>>>>>>>> <storeUsage limit="60 gb" name="foo"/> >>>>>>>>>>>>> </storeUsage> >>>>>>>>>>>>> <tempUsage> >>>>>>>>>>>>> <tempUsage limit="60 gb"/> >>>>>>>>>>>>> </tempUsage> >>>>>>>>>>>>> </systemUsage> >>>>>>>>>>>>> </systemUsage> >>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>>> View this message in context: >>>>>>>>>>>>> http://www.nabble.com/Out-of-Memory-on-5.3-tp26064098p26064098.html >>>>>>>>>>>>> Sent from the ActiveMQ - User mailing list archive at >>>>>>>>>>>>> Nabble.com. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Can you send the rest of your config ? >>>>>>>>>>>> >>>>>>>>>>>> Rob Davies >>>>>>>>>>>> http://twitter.com/rajdavies >>>>>>>>>>>> I work here: http://fusesource.com >>>>>>>>>>>> My Blog: http://rajdavies.blogspot.com/ >>>>>>>>>>>> I'm writing this: http://www.manning.com/snyder/ >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>> >>>>>>> >>>>> >>>>> >>>>> ----- >>>>> Dejan Bosanac >>>>> >>>>> Open Source Integration - http://fusesource.com/ >>>>> ActiveMQ in Action - http://www.manning.com/snyder/ >>>>> Blog - http://www.nighttale.net >>>>> >>>> http://old.nabble.com/file/p26264779/dump.jpg >>>> -- >>>> View this message in context: >>>> http://old.nabble.com/Out-of-Memory-on-5.3-tp26064098p26264779.html >>>> Sent from the ActiveMQ - User mailing list archive at Nabble.com. >>>> >>>> >>> >>> >>> >>> -- >>> http://blog.garytully.com >>> >>> Open Source Integration >>> http://fusesource.com >>> >>> >> http://old.nabble.com/file/p26278228/oom.jpg >> > > -- > View this message in context: > http://old.nabble.com/Out-of-Memory-on-5.3-tp26064098p26279671.html > Sent from the ActiveMQ - User mailing list archive at Nabble.com. > > -- http://blog.garytully.com Open Source Integration http://fusesource.com