9

用户如何通过 MQTT 进行推送通知来超过 Linux 中的 1024 连接限制?

我正在使用 Mosquitto 服务器,我想我读到的它在 linux 版本中没有内置 1024 连接限制。那么,我可以使用单个服务器(无桥接等)并获得 5,000、10,000 多个用户吗?

或者,我绝对需要桥接吗?除了 mosquitto 的配置设置手册页之外,我还没有看到很多关于如何设置的文章。

或者,我可以只修改一些 linux 配置设置,我就可以使用单个 mosquitto 服务器了吗?

我的应用程序或多或少是一个即时消息应用程序,因此我预计会有大约 10,000 甚至 20,000 人使用它,并与 mosquitto 保持 24/7 全天候连接以提醒他们消息。

4

3 回答 3

8

从理论上讲,您可以将 Linux 设置为 mosquitto 的最大套接字数设置为您需要的值。那么问题是围绕性能。关键指标是每秒消息总数。如果您连接了 20k 个客户端,有多少是活动的,每个将发送多少条消息?

例如,如果您的一半客户端处于活动状态并且每秒发送 1 条消息,则有 10k msps - 当然只是传入。如果这些消息中的每一个都是 10 个字节,那么您将处于持续的 100kB/s 或 800kbps。

另一个方面是您的主题层次结构是如何排列的。我不能告诉你什么是最好的,但它肯定会产生影响。

我最好的建议是编写一个模拟真人的客户端,然后用它来对你的场景进行如此真实的测试。

我见过极端客户数量的例子:http: //bit.ly/HytRpK但没有更多细节。

最后一点:IBM 目前正在制作一本关于 MQTT 的红皮书。它应该在“春天”可用,即很快。我认为它将涵盖扩展问题。

于 2012-04-10T16:30:34.130 回答
5

对于一个客户,我们测试了 IBM WebSphere MQ 的 MQTT,将每个队列管理器的并发客户端连接数增加到 240,000 个(MQ 运行时,一个 MQ 集群中可以有很多)。有人告诉我,这比 Apache Web 服务器合理处理的要多 10 倍。测试期间的服务器 CPU 低于 5%。会不断增加并发 MQTT 客户端的数量,远远超过 240,000,但实验室的负载测试客户端机器用完了。IBM MQ 是嵌入在 WebSphere Message Broker ESB 中的 pub/sub 提供程序,所以我希望它会产生相同的结果。

于 2012-11-14T04:51:21.810 回答
3

我不知道有谁对这个数量的连接进行过 mosquitto 的批量测试。我想您可以做的一件事是在您选择的运行时测试 mosquitto 实例,并在系统测试期间将大量客户端线程连接到它。

IBM 使用 WebSphere MQ 作为 MQTT 代理的实施已被证明支持多达 100,000 个并发连接。我相信 IBM 的免费代理 RSMB 仅限于 1024 个连接。

您可能需要考虑如何使用网桥和配置服务扩展您的代理,以确定将新用户连接到哪个代理。

于 2012-04-10T13:16:19.150 回答