[rabbitmq-discuss] Memory watermark alert not resetting.

Simon MacMullen simon at rabbitmq.com
Mon Oct 8 11:35:04 BST 2012


On 08/10/2012 9:57AM, Raviv Pavel wrote:
> Makes sense.
> I'm trying to reproduce with higher watermark by publishing messages,
> consuming them but not acking (this is what happened in production) but
> can't get the memory to go above the watermark.

You will eventually, but this may take quite a long time. RabbitMQ will 
page messages to disc under memory pressure, this includes 
consumed-but-unacked messages. But there is a small per-message cost for 
messages in general, and a small per-message-per-queue cost for 
consumed-but-unacked messages. So with enough messages this can add up 
and block publishers.

> Can you explain or point me to an explanation of Rabbit's memory usage?

Nothing much is documented yet. We are working on this, along with 
better memory use details in ctl / mgmt.

> Also, When hitting the watermark, the server seems to block the producer
> on the socket level, instead of sending a flow control message.

The flow control messages in the spec are unfortunately not very useful, 
since they rely on the client taking notice of them in a timely way. In 
practice this tends not to happen.

> Since
> the .Net SDK doesn't expose a send timeout, publishing is blocked forever.
> Any reason for not exposing such timeout?

I think since you could wrap it easily enough yourself this came down to 
API complexity.

Cheers, Simon


More information about the rabbitmq-discuss mailing list