How about a stack trace on the client?  Can you look for the consumer threads
and see what they are doing?

Note that with producers and consumers on the same connection, it's possible
to reach a deadlock if producer-flow-control kicks in because the entire
connection is blocked, not just the one producer.  There are two ways this
can happen.  First, if the client produces and consumes the same
destination.  Second, if the client is producing one destination and
consuming a second destination and another client is consuming the first and
producing to the second.  Actually, more complicated possibilities exist as
well.

Your best bet is to never consume and produce on the same connection so that
consumption never blocks due to producer-flow-control.  In that scenario,
deadlocks won't happen because consumers can always consume.

Back to stack traces - if the consuming threads are blocked waiting to
obtain a lock while producing threads hold that lock, that could indicate
the problem.

Anyway, slow consumption is quite often the cause of broker hangs, so
looking for slow consumption and understanding speeding consumption (or
slowing production) is important.  If the broker JVM becomes completely
unresponsive, try connecting jconsole or visualvm before the broker hangs
and then watch memory.  If the JVM is running out of Heap or Permgen space,
that would explain the hung broker.



--
View this message in context: 
http://activemq.2283324.n4.nabble.com/Broker-Hangs-after-some-time-or-does-nothing-tp4677506p4677656.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to