Hi Mattias,<div><br></div><div>Many thanks for the reply.</div><div><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Did you check with lsof/netstat on the *client* machine whether the sockets are really dead there?<br>
</blockquote><div><br></div><div>Yes -- the client ports that lsof reports open on the RabbtMQ server machine aren't listed in the client machine; for example, on the server I can see:</div><div><br></div><div><div>beam.smp 22933 rabbitmq 23u IPv4 44493222 TCP 10.2.7.11:5672-><a href="http://10.2.2.11:33748" target="_blank">10.2.2.11:33748</a> (ESTABLISHED)</div>
<div><br></div><div>but on the client machine (10.2.2.11) I don't see a socket from port 33748. Right now, if I count the total number of sockets with port 5672 and grep for the address of the other machine, I see 28 connections on the client and 49 on the server (including the one I listed above).</div>
<div><div> </div></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Also, are these connections going via some kind of firewall or loadbalancer? If so, perhaps the connections to the server are kept open there.<div></div></blockquote><div><br></div><div>I started to type "no" but then decided to confirm this and turns out that the connection does indeed go through a firewall. I tend to think of firewalls as just blocking ports, but you're right -- perhaps there's more going on. I've asked a network engineer to check the configuration.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
If that fails, is there a configuration option that lets RabbitMQ close broken connections?<br>
</blockquote>
<br></div>
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.</blockquote>
<div><br></div><div> Coincidentally, the developer of the interface library I'm using announced this morning that the latest version includes a heartbeat parameter. I'll try that as soon as possible.</div><div><br>
</div><div>Thanks again,</div><div>Mark</div><div><br></div></div></div>