ZeroMQ客户端丢失连接

时间:2012-10-08 08:54:36

标签: tcp zeromq

我有一个客户端(PULL)连接到服务器(PUSH)。起初他们工作得很好。但后来连接断了,客户端ZeroMQ不会尝试重新连接到服务器。

一个神秘的事情是,如果我在客户端和服务器端执行netstat,则客户端显示连接仍然​​是ESTABLISHED,而服务器端没有相应的条目。我想这就是为什么客户端没有重新连接的原因。

PS:客户端和服务器处于不同的IDC中,并且它们之间存在带宽限制。但是当断开连接时,我们的监视器显示它没有达到频段限制。

而且,当我在服务器端执行netstat时(当连接正常时),有时Send-Q列非常大,然后下拉到0。

这就是我所拥有的所有信息。如果您需要更多详细信息,请告诉我。

1 个答案:

答案 0 :(得分:3)

我意识到这是一个非常古老的问题,但我遇到了几乎完全相同的问题,并在尝试寻找修复时找到了这个问题。我相信我已经解决了我的问题所以希望这会在某些时候帮助某人。

我有相同的情况,但 ROUTER -> ROUTER 。一切都很好,但在大约15分钟后没有发送任何消息,消息将不再成功。然后我发现:http://api.zeromq.org/3-2:zmq-setsockopt。对我有用的三个套接字选项是(使用pyzmq):

# self.client is my socket here
self.client.setsockopt(zmq.TCP_KEEPALIVE, 1)
self.client.setsockopt(zmq.TCP_KEEPALIVE_IDLE, 300)
self.client.setsockopt(zmq.TCP_KEEPALIVE_INTVL, 300)

这些会覆盖操作系统设置,我不再看到连接超时或丢弃。