[rabbitmq-discuss] Producers hanging when reaching high memory watermark on 1.8.1

Matthias Radestock matthias at rabbitmq.com
Mon Aug 16 14:44:36 BST 2010


On 16/08/10 14:08, Alister Morton wrote:
> If a system is slowed to a crawl you can't know that it suddenly
> isn't
going to clear. If a system has issued a stop, you know for certain that
until told otherwise, nothing is moving. Fundamentally different situations.

The memory condition that triggered channel.flow can clear just as 
quickly as any condition that caused a slow down.

> I remember being told years ago, never confuse an observed effect
(i.e. the system /appears/ to have stopped) with what is defined to be
the case (i.e. we have been told to stop sending).

The "appears to have stopped" which is observable as a slow-down in TCP 
operations is actually a manifestation of a "please stop sending" signal 
from the TCP layer, or rather a "I can't send any more because I've 
already sent as much as the other side can handle" signal. [I am 
simplifying and paraphrasing here]. The network stack doesn't magically 
stop sending data / block callers; some event/condition has to trigger that.

The OP wanted to prevent their publishing threads from stalling. The 
techniques I suggested to the OP in my original reply deal with *all* 
conditions that can cause that to happen.



More information about the rabbitmq-discuss mailing list