【发布时间】:2016-07-19 06:29:59
【问题描述】:
我有一个设置,其中一个主进程正在设置 ZMQ_ROUTER,然后分叉许多子进程,然后连接到该路由器。
每当一个子zmq_connect() 到主控时,就会占用一个文件描述符。
但是,这将交互进程的数量限制为允许的文件描述符的数量(每个进程)。对我(linux)来说,目前只有 1024。
这对于我的预期用途(多智能体/群体模拟)来说太小了。
回答:
您不能,除非使用线程间套接字类型(使用 inproc:// 传输类)。所有其他协议每个连接使用一个文件描述符。
如果该应用程序有多个服务(例如可以建立多个tcp://<address:port> 连接),则减少每个应用程序所需文件描述符数量的一种新方法似乎是使用资源属性resource property,它允许一种将多个服务组合到一个端点。
【问题讨论】:
-
拥有消息传递智能群听起来很有吸引力。无论如何,亚历克斯,方向陷入双重麻烦,痛苦来自
ZMQ_FD意义上的PTIME和PSPACE方向,并且可能来自EXPTIME的恐怖可能来自消息流 -- 您的目标数字的数量级是多少?1E4?1E5?1E6?很想听到更多关于您的项目/研究的信息,亚历克斯。 -
是的,我知道将给定任务拆分为多代理可能会增加复杂性。我听到了两个方向的争论;有人说“我们需要将其拆分,否则我们无法获得足够灵活/功能强大的解决方案”,其他人则说:“将其组合在一起,否则您将无法控制复杂性”。我想两者都是真的。取决于应用程序。
-
对此本身绝对没有异议,但需要知道您的群体将增长到的预计数量级。 那么?
-
啊,我错过了这个信息。我会说 10k 是必须的 100k 很好 上面的一切都会很棒。
-
感谢您的澄清,100k+ 很好且可行并且作为一个主要分布式系统,可以通过进一步扩展来保持增长,具体取决于群体间代理信号的复杂程度/通信层应该是。
标签: zeromq file-descriptor distributed-system