[rabbitmq-discuss] |Spam| Re: Possible memory leak in the management plugin

Simon MacMullen simon at rabbitmq.com
Wed Jun 19 16:34:14 BST 2013


Also, I have a patched version of the management plugin which fixes the 
leak I found today:

http://www.rabbitmq.com/releases/plugins/v3.1.1/rabbitmq_management-3.1.1-leakfix1.ez

(see http://www.rabbitmq.com/plugins.html#installing-plugins for where 
to put it, it replaces rabbitmq_management-3.1.1.ez)

If you are able to test this version, that would also be great.

Cheers, Simon

On 19/06/13 15:57, Simon MacMullen wrote:
> Thanks.
>
> Could you run
>
> rabbitmqctl eval
> '{_,_,_,[_,_,_,_,[_,_,{_,[{_,S}]}]]}=sys:get_status(global:whereis_name(rabbit_mgmt_db)),T=element(5,S),ets:foldl(fun(E,_)->io:format("~p~n~n",[E])end,[],T).'
>
>
> please? This will dump the entire leaky table to standard output, so you
> would want to redirect it to a file.
>
> If you could also accompany that with "rabbitmqctl report" so I can see
> what actually exists at that time then I can at least see what is leaking.
>
> Cheers, Simon
>
> On 19/06/13 15:30, Travis Mehlinger wrote:
>> Hi Simon,
>>
>> We aren't doing anything like that. Whenever one of our services starts
>> (which are based on Kombu, if that helps), it plucks a connection from
>> its internal pool, creates a channel on that connection, then binds on
>> its request queue, which hangs around until the service stops. The only
>> thing that deviates from this pattern is our monitor, which connects and
>> disconnects fairly rapidly, and uses exclusive queues.
>>
>> That said, it's entirely possible that we have something floating around
>> that I don't know about that fits the behavior you described. I'll keep
>> digging and see what I can turn up. In the meantime, let me know if
>> there's any more information I can collect from Rabbit.
>>
>> Thanks, Travis
>>
>>
>> On Wed, Jun 19, 2013 at 6:13 AM, Simon MacMullen <simon at rabbitmq.com
>> <mailto:simon at rabbitmq.com>> wrote:
>>
>>     On 18/06/13 16:11, Travis Mehlinger wrote:
>>
>>         We declare those queues as exclusive so they're getting
>> cleaned up
>>         automatically.
>>
>>
>>     I have found a plausible candidate for the leak. But it's dependent
>>     on having a long lived channel which declares and deletes lots of
>>     short-lived queues. We keep some information on the deleted queues
>>     until the channel is closed. Could your monitoring tool be doing
>>     that? Obviously it would have to be deleting queues explicitly, not
>>     relying on them being exclusive.
>>
>>     Cheers, Simon
>>
>>
>>     --
>>     Simon MacMullen
>>     RabbitMQ, Pivotal
>>
>>
>
>


-- 
Simon MacMullen
RabbitMQ, Pivotal


More information about the rabbitmq-discuss mailing list