Answers to your questions:

1) Not sure yet
2) Because at the moment, send fail if no space is only triggered when
producer flow control is on (at least for this case, topics)
3) like gtully said, connections could not be shutdown if they are blocked
somehow

I noticed in your config you explicitly set the prefetch on the network
connector to 32766. The default for network connectors is 1000 and the
default for regular topics is Short.MAX_VALUE (which is 32767). Since the
bridge doesn't have a prefetch buffer like normal clients do, setting the
prefetch to 32766 could end up flooding it. Any reason why you have it set
to 32766?

So TopicSubscriptions should always have the broker's main memory usage. If
it has the destination's memory limit, then something went wrong. Like Gary
said, the pending message cursor's messages would be spooled to disk when
the main memory limit reaches its high water mark (70% by default).... but
that appears to not have happened in this case.

Are there any indications that the TopicSubscription is for the network
bridge? Or maybe that the network bridge failed somehow? I see that the
dispatched count is the same as what you've set for you prefertch on the
bridge, but if anything else can point to that it might be helpful. For
example, are those port numbers on the transport connector logs for the
network bridge?

How is the broker on the other end of the bridge configured? Same?


On Fri, Nov 23, 2012 at 8:36 AM, Mark Anderson <manderso...@gmail.com>wrote:

> I have ActiveMQ 5.6.0 configured as follows:
>
> Producer Flow Control = false
> Send Fail If No Space = true
> Memory Usage Limit = 128Mb
> Temp Usage Limit = 1Gb
>
> All my messages are non-persistent. The temp usage is configured to handle
> spikes/slow consumers when processing messages.
>
> I continually see the following in the logs:
>
> WARN  Nov 20 20:55:47 (13748874 [InactivityMonitor Async Task:
> java.util.concurrent.ThreadPoolExecutor$Worker@7ea0e15b[State = 0, empty
> queue]] org.apac
> he.activemq.broker.TransportConnection.Transport) Transport Connection to:
> tcp://192.168.2.103:35186 failed: java.net.SocketException: Broken pipe
> INFO  Nov 20 20:55:51 (13752162 [ActiveMQ Transport: tcp:///
> 192.168.2.103:35168] org.apache.activemq.broker.TransportConnection) The
> connection to 'tcp:
> //192.168.2.103:35166' is taking a long time to shutdown.
> INFO  Nov 20 20:55:56 (13757162 [ActiveMQ Transport: tcp:///
> 192.168.2.103:35168] org.apache.activemq.broker.TransportConnection) The
> connection to 'tcp:
> //192.168.2.103:35166' is taking a long time to shutdown.
> INFO  Nov 20 20:56:01 (13762162 [ActiveMQ Transport: tcp:///
> 192.168.2.103:35168] org.apache.activemq.broker.TransportConnection) The
> connection to 'tcp:
> //192.168.2.103:35166' is taking a long time to shutdown.
>
> I'm not sure why the connection will never shutdown.
>
> I then see the following message:
>
> org.apache.activemq.broker.region.TopicSubscription) TopicSubscription:
> consumer=ID:linux-5ks2-57958-1353426643811-3:1:378:1, destinations=1,
> dispatched=32766, delivered=0, matched=0, discarded=0: Pending message
> cursor
>
> [org.apache.activemq.broker.region.cursors.FilePendingMessageCursor@4c41cfa2
> ]
> is full, temp usage (0%) or memory usage (211%) limit reached, blocking
> message add() pending the release of resources.
>
> This leads me to the following questions:
>
> 1) Why would the memory usage be 211% while temp usage is 0%.
> 2) The thread dump shows that send calls on producers are blocking. Why
> would they not throw exceptions when send fail if no space = true?
> 3) Would the issue with connection shutdown contribute to the memory usage?
>
> Thanks,
> Mark
>



-- 
*Christian Posta*
http://www.christianposta.com/blog
twitter: @christianposta

Reply via email to