[rabbitmq-discuss] Memory limit cleanup, hanging connections.

Simon MacMullen simon at rabbitmq.com
Mon Oct 15 11:44:48 BST 2012

On 15/10/12 10:49, Irmo Manie wrote:
> Hi,
> We ran into a situation where we hit a memory limit by queues being
> filled upt, causing all connections to be in a blocked or blocking state.
> We're killed all connections from the client side and deleted the filled
> up queues.
> While the broker is still cleaning up /msg_store_transient (which is
> horribly slow), it also still lists all the connections as alive, being
> still blocked.
> Is it possible that when the broker is still in memory alarm mode, the
> connections (blocked) are not checked for their heartbeat and therefore
> are kept alive?

Yes, that's absolutely correct. The blocked connections don't perform 
any network operations at all - which means that not only don't they 
check for heartbeats, they don't even detect the TCP connection being 
torn down. As soon as the memory alarm clears, the connections will 
unblock, notice the TCP connection having gone away, and vanish.

> And what is the cause of the slowness of the cleanup when deleting
> queues with only transient messages?

If you've "filled up" all your queues then they will have been paging to 
disc for some time - cleaning all that up can be quite slow.

Cheers, Simon

Simon MacMullen
RabbitMQ, VMware

More information about the rabbitmq-discuss mailing list