You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Anlin <an...@qualcomm.com> on 2007/08/24 21:08:26 UTC

AMQ-CPP flow-control and server congestion handling problem

Hi,
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:

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

Client:
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
forever.
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.

Thanks,
Anlin.

-- 
View this message in context: http://www.nabble.com/AMQ-CPP-flow-control-and-server-congestion-handling-problem-tf4325223s2354.html#a12318190
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Re: AMQ-CPP flow-control and server congestion handling problem

Posted by Albert Strasheim <fu...@gmail.com>.
Hello

Could you provide a basic C++ program that reproduces the problem? Fixing 
this shouldn't be too hard once we have that. You might consider creating an 
issue in the AMQCPP JIRA and attaching the program there.

Cheers,

Albert

----- Original Message ----- 
From: "Anlin" <an...@qualcomm.com>
To: <us...@activemq.apache.org>
Sent: Friday, August 24, 2007 9:08 PM
Subject: AMQ-CPP flow-control and server congestion handling problem


>
> Hi,
> 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.