activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Anlin <>
Subject AMQ-CPP flow-control and server congestion handling problem
Date Fri, 24 Aug 2007 19:08:26 GMT

Our tests show some problems in activemq flow-control and congestion
handling. We use C++ interface for client side with openwire transport. We
used slow consumers to test the behavior of client and server. No
persistency is used.

Our environment is:

JAVA: J2SDK1.4.2_14
Operating System: Linux AS4 2.6.9-42ELsmp

Transport: openwire
C++ Client api version: activemq-cpp-2.0.1-1.rhe14
C++ Compiler: gcc-c++-3.4.6
Operating System: Linux AS4 2.6.9-42ELsmp

Problem description:

Activemq Congestion problem (Here congestion means the state that
flow-control is enabled and configured size of topic/queue is reached and
producers are blocked):

Topics in congestion state:
1.	When consumer goes down, without closing the connection, broker does not
clean up resources for that connection. This caused producer to stay blocked
2.	If we attempt to clean  up connection from jconsole. Producer is killed
with segmentation fault.

Queues in congestion state:
1.	If producer starts before consumer and gets blocked, once consumer starts
producer gets segmentation fault.
2.	If producer is blocked and consumer crashes, and we restart consumer,
producer gets segmentation fault.
3.	When producer is blocked, if memory is increased from jconsole. Producer
gets segmentation fault.

In summary, once producer is congestion state, it can not come out of that
state. TCP dump shows that every time the congestion is likely to be
relieved by some methods (increase memory, speedup consumer, etc), producer
receives a message from broker (14 bytes, probably related to flow control
to inform the producer that there is no more congestion and it can send more
messages). But it seems the Producer can not understand this message and
tries to close resources. Closing resources in turn has a bug and get
segmentation fault. The segfault is a known issue documented on activemq
forum and a fix will be in next release. But producer should have understood
the flow-control message and goes on.

TTL in congestion state:
For both topic and queue, TTL does not work in congestion. If producer is
blocked due to flow-control, memory is not cleared when messages expire due
to ttl.


View this message in context:
Sent from the ActiveMQ - User mailing list archive at

View raw message