You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by "Robillard, Greg L" <gr...@lmco.com> on 2010/08/12 17:59:51 UTC

ActiveMQ disconnects producer with large message throughput

Not certain where to begin.

apache-activemq-5.3.2
using non-persistent queues
using openwire jms connections

Problem described:

Normal operation has about 30 clients connected receiving between 300 and 500 messages per minute.  Problem occurs if a single client configures a large amount of data.  This can get a single client to receive up to 10,000 messages per minute.  The message size is small, generally at or under 1K.

Initially producerFlowControl was set to true, but this shut the producer down for everyone.  ProducerFlowControl is now set to false.

The client queue size continues to fill (NotificationQueueSizeExceeded).  This happens primarily on slower networks and client computers.  Faster networks and client computers can often handle this data rate.  What I currently do, is trap this situation, and log the client off since their client cannot keep up with the data rate.

The problem specifically is that sometimes, when a client is bringing in large amounts of data,  activemq sometimes simply runs out of memory and shuts the producer down and all of the clients.

Currently, the only way I have been able to recover from this is to restart activemq and the producer.

I am looking for what needs to be done to keep activemq from running out of memory if these large data rates happen when I am not using producerflowcontrol.   Additionally, how can I recover if this situation happens.

I have attempted to increase the prefetch size, to increase throughput, to no avail.  I was using vmQueueCursor, but am currently attempting fileQueueCursor.

Any suggestions or ideas would be of great help.

Greg

RE: EXTERNAL: Re: ActiveMQ disconnects producer with large message throughput

Posted by "Robillard, Greg L" <gr...@lmco.com>.
Thanks.  Can you point to a description of the filePendingMessageCursor, so I understand it's implementation?

-----Original Message-----
From: Gary Tully [mailto:gary.tully@gmail.com]
Sent: Thursday, August 12, 2010 11:46 AM
To: users@activemq.apache.org
Subject: EXTERNAL: Re: ActiveMQ disconnects producer with large message throughput

filePendingMessagecursor is your man here, and configure a systemUsage memory limit that controls how much memory resources are consumed by the cursors before offloading to the local filesystem kicks in.

On 12 August 2010 16:59, Robillard, Greg L <gr...@lmco.com> wrote:
> Not certain where to begin.
>
> apache-activemq-5.3.2
> using non-persistent queues
> using openwire jms connections
>
> Problem described:
>
> Normal operation has about 30 clients connected receiving between 300 and 500 messages per minute.  Problem occurs if a single client configures a large amount of data.  This can get a single client to receive up to 10,000 messages per minute.  The message size is small, generally at or under 1K.
>
> Initially producerFlowControl was set to true, but this shut the producer down for everyone.  ProducerFlowControl is now set to false.
>
> The client queue size continues to fill (NotificationQueueSizeExceeded).  This happens primarily on slower networks and client computers.  Faster networks and client computers can often handle this data rate.  What I currently do, is trap this situation, and log the client off since their client cannot keep up with the data rate.
>
> The problem specifically is that sometimes, when a client is bringing in large amounts of data,  activemq sometimes simply runs out of memory and shuts the producer down and all of the clients.
>
> Currently, the only way I have been able to recover from this is to restart activemq and the producer.
>
> I am looking for what needs to be done to keep activemq from running out of memory if these large data rates happen when I am not using producerflowcontrol.   Additionally, how can I recover if this situation happens.
>
> I have attempted to increase the prefetch size, to increase throughput, to no avail.  I was using vmQueueCursor, but am currently attempting fileQueueCursor.
>
> Any suggestions or ideas would be of great help.
>
> Greg
>



--
http://blog.garytully.com

Open Source Integration
http://fusesource.com

[ANN]VTD-XML 2.9

Posted by Jimmy Zhang <cr...@comcast.net>.
VTD-XML 2.9, the next generation XML Processing API for SOA and Cloud computing, has been released. Please visit  https://sourceforge.net/projects/vtd-xml/files/ to download the latest version.
  a.. Strict Conformance 
    a.. VTD-XML now fully conforms to XML namespace 1.0 spec 
  b.. Performance Improvement
    a.. Significantly improved parsing performance for small XML files 
  c.. Expand Core VTD-XML API  
    a.. Adds getPrefixString(), and toNormalizedString2() 
  d.. Cutting/Splitting 
    a.. Adds getSiblingElementFragment()  
  e.. A number of bug fixes and code enhancement including: 
    a.. Fixes a bug for reading very large XML documents on some platforms 
    b.. Fixes a bug in parsing processing instruction 
    c.. Fixes a bug in outputAndReparse() 

Re: ActiveMQ disconnects producer with large message throughput

Posted by "Martin C." <ma...@gmx.at>.
Hi,

Thanks for the pointer!


Gary Tully wrote:
> 
> filePendingMessagecursor is your man here, and configure a systemUsage
> memory limit that controls how much memory resources are consumed by
> the cursors before offloading to the local filesystem kicks in.
> 

Could you provide a simple configuration as an example? The JavaDoc knows
about a class named FilePendingMessageCursor, but I cannot find it in the
5.3.1 XML schema documentation (the version I am using at the moment and
cannot upgrade that easily).

All I am using right now is:
 <destinationPolicy><policyMap><policyEntries>
   <policyEntry queue=">" producerFlowControl="false">
      <pendingQueuePolicy>
        <fileQueueCursor />
      </pendingQueuePolicy>
    </policyEntry>
 </destinationPolicy></policyMap></policyEntries>

  <systemUsage>
    <systemUsage sendFailIfNoSpace="true">
      <memoryUsage>
        <memoryUsage limit="256 mb" />
      </memoryUsage>
    </systemUsage>
  </systemUsage>

Would this be enough?

Thank you very much in advance!

Best regards,
Martin

PS: Thanks for your blog, I liked the articles there!
-- 
View this message in context: http://old.nabble.com/ActiveMQ-disconnects-producer-with-large-message-throughput-tp29420291p29425985.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Re: ActiveMQ disconnects producer with large message throughput

Posted by Gary Tully <ga...@gmail.com>.
filePendingMessagecursor is your man here, and configure a systemUsage
memory limit that controls how much memory resources are consumed by
the cursors before offloading to the local filesystem kicks in.

On 12 August 2010 16:59, Robillard, Greg L <gr...@lmco.com> wrote:
> Not certain where to begin.
>
> apache-activemq-5.3.2
> using non-persistent queues
> using openwire jms connections
>
> Problem described:
>
> Normal operation has about 30 clients connected receiving between 300 and 500 messages per minute.  Problem occurs if a single client configures a large amount of data.  This can get a single client to receive up to 10,000 messages per minute.  The message size is small, generally at or under 1K.
>
> Initially producerFlowControl was set to true, but this shut the producer down for everyone.  ProducerFlowControl is now set to false.
>
> The client queue size continues to fill (NotificationQueueSizeExceeded).  This happens primarily on slower networks and client computers.  Faster networks and client computers can often handle this data rate.  What I currently do, is trap this situation, and log the client off since their client cannot keep up with the data rate.
>
> The problem specifically is that sometimes, when a client is bringing in large amounts of data,  activemq sometimes simply runs out of memory and shuts the producer down and all of the clients.
>
> Currently, the only way I have been able to recover from this is to restart activemq and the producer.
>
> I am looking for what needs to be done to keep activemq from running out of memory if these large data rates happen when I am not using producerflowcontrol.   Additionally, how can I recover if this situation happens.
>
> I have attempted to increase the prefetch size, to increase throughput, to no avail.  I was using vmQueueCursor, but am currently attempting fileQueueCursor.
>
> Any suggestions or ideas would be of great help.
>
> Greg
>



-- 
http://blog.garytully.com

Open Source Integration
http://fusesource.com