[rabbitmq-discuss] Producers hanging when reaching high memory watermark on 1.8.1
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
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