[rabbitmq-discuss] Memory Leak in RabbitMQ .NET Driver v1.7.1+

Bryan Murphy bmurphy1976 at gmail.com
Thu Mar 18 18:19:47 GMT 2010


Sometime between 1.7.0 and 1.7.1 (revision 262) the following line was added
to ConnectionBase.MainLoop in the RabbitMQ .NET driver:

  Thread.GetDomain().DomainUnload += new EventHandler(HandleDomainUnload);

I've found no place in the code where this event is unregistered, leading to
a memory leak every time a connection is disposed.  The following reference
chain compounds this problem if you send large messages and create/dispose a
large number of connections:

  DomainUnload -> Connection -> SocketFrameHandler ->
NetworkBinaryReader/Writer -> BufferedStream

We're currently seeing the symptoms of this in our production environment
where one of our processes (which usually settles in around 300mb) grows
upwards of 4gig over a 12 to 18 hour period.

I believe you can work around this by either rolling back to the 1.7.0
driver, or commenting out that line of code.  We're currently pushing out a
custom build of the driver to verify this fix, but it will be a few hours
until I know for sure.

Thanks,
Bryan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20100318/efe7efb4/attachment.htm 


More information about the rabbitmq-discuss mailing list