6

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

一件神秘的事情是,如果我netstat在客户端和服务器端都这样做,客户端显示连接仍然​​是 ESTABLISHED,而服务器端没有相应的条目。我想这就是客户端不重新连接的原因。

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

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

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

4

1 回答 1

7

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

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

# 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)

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

于 2017-07-14T18:19:11.183 回答