【发布时间】:2011-10-29 00:22:35
【问题描述】:
现在我正在做一个关于 Android 推送的 RnD,首先我正在研究: 使用 RSMB 的 MQTT
问题是它可以处理多少客户?我只听到 1032,在这种情况下,这对我的应用程序不利。 (如果可配置如何?)
在这个病态的 C2DM 之后。
【问题讨论】:
-
1032 是什么意思,并发客户端? RSMB = 真正的小型消息代理?
现在我正在做一个关于 Android 推送的 RnD,首先我正在研究: 使用 RSMB 的 MQTT
问题是它可以处理多少客户?我只听到 1032,在这种情况下,这对我的应用程序不利。 (如果可配置如何?)
在这个病态的 C2DM 之后。
【问题讨论】:
RSMB 确实限制为 1024 个打开的连接总数。这很可能是由于他们使用 select() 调用来多路复用套接字连接。理论上可以通过在 Linux 上重新编译 glibc 来支持更多的套接字来改变它,但在实践中你不想这样做。
Mosquitto 不受这种限制 - 尽管您的操作系统会应用自己的限制。在 Linux 上,您可以使用 ulimit -n 查看打开的连接数,并像 ulimit -n 2048 一样增加它
在这两种情况下,还值得考虑的是,您可以桥接代理之间的连接,从而通过将每个代理的连接限制为 1000 个然后连接多个代理来支持大量客户端。这很可能是 Facebook 在其使用 MQTT 的新 Messenger 应用程序中采用的方法。
【讨论】:
有多种扩展基于 MQTT 的基础架构的方法,桥接模型很重要。
RSMB 是 IBM alphaWorks 技术,不提供生产使用许可。生产/支持版本 IBM WebSphere MQ Telemetry Daemon for Devices 的可扩展性要大得多(Linux 上 WMQ Telemetry 的 IBM 性能报告显示至少有 100,000 个并发连接的客户端发送 256 字节消息,请参阅http://www-01.ibm.com/support/docview.wss?uid=swg24027711)。
【讨论】: