运行一段时间后,ZMQ PUB SUB卡住了

时间:2015-09-09 02:05:56

标签: zeromq pyzmq

我有一个系统,其中有一个订阅者,订阅了多个发布者:

订户代码

sub_socket.bind(zmq.SUB,"address:port1")
sub_socket.bind(zmq.SUB,"address:port2")
sub_socket.bind(zmq.SUB,"address:port3")

和发布商代码

process 1:
    pub_socket1.connect(zmq.PUB,"address:port1")
process 2:
    pub_socket2.connect(zmq.PUB,"address:port2")
process 3:
    pub_socket3.connect(zmq.PUB,"address:port3")

进程1以100 msg / sec发送消息,进程2以~50 msg / sec发送消息,进程3以每小时发送消息1。

我注意到在运行一段时间后,我看到用户卡住了,即它没有收到消息。

如果我重新启动系统,它会正常工作。

我正在使用PYZMQ 14.7

问题 1

我正在以上述方式使用单个订阅者和多个发布者。这是正确的方式吗?

问题 2

我知道 HWM 限制,我不确定我发送的消息是否会导致这种情况。

是否有人在pyzmq看到了这样的问题?

1 个答案:

答案 0 :(得分:1)

A1:是的,

ZeroMQ支持多个 .bind() -s。这不是根本问题。

A2:不,

ZeroMQ对指示的流量没有问题。如果有疑问,请重新设计您的系统,以便进行一些自我诊断监控。

  

process 1 以100 msg / s发送消息,
   process 2 ~50 msg / s
   process 3 每小时发送一条消息。

为您提供充足的空间来添加智能自我诊断功能。

可能从看门狗计时器开始,以检测消息流似乎在观察者侧以及process 3 .close() 的确切停止时间每封邮件都.connect() ,并检查哪些传入的邮件流停止在观察者端显示。