我有一个客户端(PULL)连接到服务器(PUSH)。起初,它们工作得很好。但是稍后连接断开,客户端ZeroMQ不会尝试重新连接到服务器。
一件不可思议的事情是,如果我netstat在客户端和服务器端进行操作,则客户端会显示连接仍已建立,而服务器端没有相应的条目。我想这就是客户端不重新连接的原因。
PS:客户端和服务器在不同的IDC中,并且它们之间存在带宽限制。但是当断开连接发生时,我们的监视器显示它没有达到频带限制。
而且,当我在服务器端执行netstat时(连接正常时),有时Send-Q列很大,然后降为0。
这就是我所拥有的全部信息。如果您需要更多详细信息,请告诉我。
小智 5
我意识到这是一个非常老的问题,但是我遇到了几乎完全相同的问题,并在尝试找到解决方法时发现了这个问题。我相信我已经解决了我的问题,因此希望这对某人有所帮助。
我有相同的情况,但是。起初一切正常,但是在大约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)
Run Code Online (Sandbox Code Playgroud)
这些将覆盖操作系统设置,并且我不再看到连接超时或断开连接。