1

我是 ZMQ ZMQ 版本的新手 - 2.2.1 Ubuntu - 10.04 我正在使用 PUB-SUB 模式在多个发布者和多个订阅者之间进行通信。转发器用于从多个发布者订阅数据,并将相同的数据发布给所有订阅者。目前,如果三个发布者正在运行,并且每个发布者在 1 秒内通过 PUB 通道发送 1000 条消息。订阅者每 1 秒接收数据、存储数据并写入数据库。由于数据库的参与,订阅者接收数据的速度有所延迟,导致内存使用量(RAM)每1秒增加6-7MB。最后,由于OOM,订阅者被操作系统杀死,我尝试在转发器的两个套接字上使用选项 ZWQ_HWM 和 ZMQ_SWAP。但问题仍然存在。有什么解决办法吗???

4

1 回答 1

1

总的来说,您的问题是您的数据库无法跟上您的发布者。0MQ 无法为您解决这个问题。您需要一个基于更改系统行为的架构解决方案,大概是您执行插入的方式。

你有几个选择:

  • 使用更快的数据库
  • 使用更快的数据库插入方法
  • 写入由另一个进程异步处理的日志
  • 更改为让接收者告诉发送者他们已备份的套接字模式,因此发送者暂停(如果可能的话)

我认为在您的情况下,spool-to-disk-file 选项是最好的。

于 2012-12-14T07:49:13.107 回答