activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Badri <badrinarayanan.doraisw...@fxall.com>
Subject Re: Out Of Memory Error while running TopicPublisher/TopicListener
Date Wed, 17 Sep 2008 14:51:28 GMT

Thanks Rob for info.

Does the tag advisoryForSlowConsumers be used in policyEntry?

I could see 2 tags for advisory - advisorySupport &
sendAdvisoryIfNoConsumers in the activemq-core-5.2.xsd. I just referred to
activemq-core-5.2-SNAPSHOT.xsd & did not find tag advisoryForSlowConsumers.
Not sure if I am looking at wrong place.

Where can I find the xsd & source files?
All mirror sites were giving me 404 when I wanted to download the 5.2
source.
http://www.apache.org/dist/activemq/apache-activemq/ does not have 5.2
branch. I am guessing that the 5.2 has not yet been promoted.






rajdavies wrote:
> 
> Your client is running foul of the topic prefetch - either use more  
> memory (as you've suggested) - or use a smaller prefetch - see
> http://activemq.apache.org/what-is-the-prefetch-limit-for.html.
> 
> The slow consumer advisory will be generated from the broker when this  
> limit is reached - but only if enabled (its off by default)
> 
> To enable it - use a DestinationPolicy - see
> http://activemq.apache.org/per-destination-policies.html
> The documentation here needs updating - but the property you need to  
> set is advisoryForSlowConsumers
> 
> cheers,
> 
> Rob
> 
> Rob Davies
> http://rajdavies.blogspot.com/
> 
> 
> On 16 Sep 2008, at 22:01, Badri wrote:
> 
>>
>> I am running broker, publisher, consumer all in Windows.
>> I have not tried this in Linux.
>> The broker & publisher are working fine. It's the consumer which is
>> crashing. Removing Thread.sleep(1000), consumer works fine. It did  
>> not crash
>> for a good amount of time before I manually stopped the TopicListener.
>>
>> Windows XP Professional with SP2, 2GB RAM.
>> Java: 1.6.0_06
>>
>> Of course this was my first test to simulate slow consumer & also  
>> see if the
>> advisory topic appears in the web console. So I used my desktop &  
>> stumbled
>> across this memory error. I just felt maybe crash could be due to  
>> using
>> Windows. I intend to do the same test in Linux.
>>
>>
>> bsnyder wrote:
>>>
>>> On Tue, Sep 16, 2008 at 10:33 AM, Badri
>>> <badrinarayanan.doraiswamy@fxall.com> wrote:
>>>>
>>>> Hi
>>>>
>>>> I am trying to simulate slow consumer using the classes
>>>> (TopicPublisher/TopicListener) provided in examples.
>>>>
>>>> I wanted to see if Web Console prints the Advisory topic for Slow
>>>> Consumer.
>>>> But I am facing Out Of Memory Error & the consumer stops abruptly.
>>>>
>>>> Following are changes I did:
>>>>
>>>> activemq.xml:
>>>>
>>>>       <transportConnectors>
>>>>           <transportConnector name="openwire"
>>>> uri="tcp://localhost:61616?maxInactivityDuration=-1"/>
>>>>       </transportConnectors>
>>>>
>>>>
>>>> TopicListener: I added a sleep of 1000 to induce some slowness.
>>>>           if (++count % 1000 == 0) {
>>>>               System.out.println("Received " + count + "  
>>>> messages.");
>>>>                               try
>>>>                               {
>>>>                                       Thread.sleep(1000);
>>>>                               }
>>>>                               catch (Exception e)
>>>>                               {
>>>>
>>>>                               }
>>>>           }
>>>>
>>>> I give java -Xmx256m -Xms128m when using TopicListener.
>>>> After maybe 5 minutes it crashes. After receiving anywhere between  
>>>> 15-20
>>>> batches of 1000 messages, it crashes.
>>>>
>>>> Exception:
>>>> Received 9000 messages.
>>>> Received 10000 messages.
>>>> javax.jms.JMSException: Unexpected error occured
>>>>       at
>>>> org 
>>>> .apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSuppo
>>>> rt.java:62)
>>>>       at
>>>> org 
>>>> .apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnect
>>>> ion.java:1255)
>>>>       at
>>>> org.apache.activemq.ActiveMQSession.send(ActiveMQSession.java:1659)
>>>>       at
>>>> org 
>>>> .apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProdu
>>>> cer.java:227)
>>>>       at
>>>> org 
>>>> .apache.activemq.ActiveMQMessageProducerSupport.send(ActiveMQMessa
>>>> geProducerSupport.java:241)
>>>>       at TopicListener.onMessage(TopicListener.java:96)
>>>>       at
>>>> org 
>>>> .apache.activemq.ActiveMQMessageConsumer.dispatch(ActiveMQMessageC
>>>> onsumer.java:983)
>>>>       at
>>>> org 
>>>> .apache.activemq.ActiveMQSessionExecutor.dispatch(ActiveMQSessionE
>>>> xecutor.java:122)
>>>>       at
>>>> org 
>>>> .apache.activemq.ActiveMQSessionExecutor.iterate(ActiveMQSessionEx
>>>> ecutor.java:192)
>>>>       at
>>>> org 
>>>> .apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.
>>>> java:122)
>>>>       at
>>>> org.apache.activemq.thread.PooledTaskRunner 
>>>> $1.run(PooledTaskRunner.ja
>>>> va:43)
>>>>       at
>>>> java.util.concurrent.ThreadPoolExecutor 
>>>> $Worker.runTask(ThreadPoolExec
>>>> utor.java:885)
>>>>       at
>>>> java.util.concurrent.ThreadPoolExecutor 
>>>> $Worker.run(ThreadPoolExecutor
>>>> .java:907)
>>>>       at java.lang.Thread.run(Thread.java:619)
>>>> Caused by: java.io.IOException: Unexpected error occured
>>>>       at
>>>> org 
>>>> .apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:
>>>> 191)
>>>>       ... 1 more
>>>> Caused by: java.lang.OutOfMemoryError: Java heap space
>>>>       at
>>>> org 
>>>> .apache.activemq.openwire.v3.BaseDataStreamMarshaller.tightUnmarsh
>>>> alByteSequence(BaseDataStreamMarshaller.java:440)
>>>>       at
>>>> org 
>>>> .apache.activemq.openwire.v3.MessageMarshaller.tightUnmarshal(Mess
>>>> ageMarshaller.java:68)
>>>>       at
>>>> org 
>>>> .apache.activemq.openwire.v3.ActiveMQMessageMarshaller.tightUnmars
>>>> hal(ActiveMQMessageMarshaller.java:67)
>>>>       at
>>>> org 
>>>> .apache.activemq.openwire.v3.ActiveMQBytesMessageMarshaller.tightU
>>>> nmarshal(ActiveMQBytesMessageMarshaller.java:67)
>>>>       at
>>>> org 
>>>> .apache.activemq.openwire.OpenWireFormat.tightUnmarshalNestedObjec
>>>> t(OpenWireFormat.java:453)
>>>>       at
>>>> org 
>>>> .apache.activemq.openwire.v3.BaseDataStreamMarshaller.tightUnmarsa
>>>> lNestedObject(BaseDataStreamMarshaller.java:126)
>>>>       at
>>>> org 
>>>> .apache.activemq.openwire.v3.MessageDispatchMarshaller.tightUnmars
>>>> hal(MessageDispatchMarshaller.java:72)
>>>>       at
>>>> org 
>>>> .apache.activemq.openwire.OpenWireFormat.doUnmarshal(OpenWireForma
>>>> t.java:362)
>>>>       at
>>>> org 
>>>> .apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.
>>>> java:276)
>>>>       at
>>>> org 
>>>> .apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTranspo
>>>> rt.java:209)
>>>>       at
>>>> org 
>>>> .apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.jav
>>>> a:201)
>>>>       at
>>>> org 
>>>> .apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:
>>>> 184)
>>>>       ... 1 more
>>>> Received 1000 messages.
>>>> Received 2000 messages.
>>>>
>>>> TopicPublisher:
>>>> private long batch(int msgCount) throws Exception {
>>>> // Commented out call to waitForCompletion
>>>> // waitForCompletion();
>>>> }
>>>>
>>>> QN 1) I just want to know if I am configuring something wrong. Or  
>>>> should
>>>> I
>>>> increase -Xmx512m when running TopicListener to get rid of OOME?
>>>
>>> You shouldn't need to raise the memory at all as there should be
>>> nothing causing memory to grow. I just added the sleep above to the
>>> TopicListener using ActiveMQ 5.2.0 and I've produced and consumed  
>>> over
>>> 300,000 messages in a matter of moments without any issue whatsoever.
>>> I'm on MacOS X using Java 1.5.0_13. What OS and Java version are you
>>> using?
>>>
>>>> QN 2) Will the advisory topic:
>>>> ActiveMQ.Advisory.SlowConsumer.Topic.topictest.messages appear  
>>>> only if
>>>> the
>>>> consumer starts discarding messages? What is the basis for this  
>>>> topic to
>>>> appear in Web console?
>>>
>>> I'm not able to see the *SlowConsumer* topic appear at all. I don't
>>> know if that's because I'm using a dual core Intel processor or what.
>>> What type of processor does your machine have?
>>>
>>> Bruce
>>> -- 
>>> perl -e 'print
>>> unpack("u30","D0G)U8V4\@4VYY9&5R\"F)R=6-E+G-N>61E<D\!G;6%I;\"YC;VT*"
>>> );'
>>>
>>> Apache ActiveMQ - http://activemq.org/
>>> Apache Camel - http://activemq.org/camel/
>>> Apache ServiceMix - http://servicemix.org/
>>>
>>> Blog: http://bruceblog.org/
>>>
>>>
>>
>> -- 
>> View this message in context:
>> http://www.nabble.com/Out-Of-Memory-Error-while-running-TopicPublisher-TopicListener-in-ActiveMQ-5.2-tp19515522p19520251.html
>> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>>
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Out-Of-Memory-Error-while-running-TopicPublisher-TopicListener-in-ActiveMQ-5.2-tp19515522p19533887.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Mime
View raw message