[rabbitmq-discuss] Socket errors and connections not closing

Matthias Radestock matthias at lshift.net
Wed Aug 12 05:46:09 BST 2009


Mark,

Mark Westling wrote:
> I'm using RabbitMQ for background processing in a Ruby on Rails 
> environment.
> [...]
> Everything works perfectly on two different deployments of this system 
> but on the third, the clients are getting occasional errors, "Connection 
> closed unexpectedly by peer".  At the same time, I'm not seeing any 
> errors at all in the RabbitMQ log on the other server.  
> 
> When the client gets an error sending a message, it creates a new 
> connection and tries passing the message again.  I do see the new 
> connection in rabbit.log but nothing corresponding to the error reported 
> by the client.  The result is a slow but steadily growing number of 
> sockets in use by RabbitMQ; lsof shows an increase of about 150-200 of 
> these sockets per day with state "established".  I haven't watched 
> carefully but it appears these sockets aren't dying, even though they 
> refer to ports that aren't open any more on the client machine.

Did you check with lsof/netstat on the *client* machine whether the 
sockets are really dead there?

Also, are these connections going via some kind of firewall or 
loadbalancer? If so, perhaps the connections to the server are kept open 
there.

> If that fails, is there a configuration option that lets 
> RabbitMQ close broken connections?

AMQP's heartbeat mechanism is designed precisely for this situation. The 
heartbeat frequency is negotiated between the client and the server at 
connection establishment. I don't know anything about the Ruby client, 
but I am assuming from the above that it disables heartbeats. If so, try 
to find a way to enable them.

Regards,

Matthias.




More information about the rabbitmq-discuss mailing list