哪个MQTT服务器用于> 1M连接

时间:2015-03-17 17:49:07

标签: mqtt

预算可能只有几百万来设置MQTT服务器场你会怎么做?

必须具有以下属性:

  • 支持所有数据中心的4-5M连接。
  • 300k msg / s,每个约1kb
  • 地理冗余
  • 不能丢失消息QOS1
  • 每个客户都会发布到一个主题,但订阅自己独特的主题。这意味着4-5百万个主题。

可在此处找到MQTT Server代理: https://github.com/mqtt/mqtt.github.io/wiki/server-support#capabilities

但是通常不会发布功能。

6 个答案:

答案 0 :(得分:11)

虽然Erlang驱动的VerneMQ MQTT代理仍然很新,但除了RAM / CPU / IP /带宽之外什么也不能阻止你打开那么多连接。

http://verne.mq

确保设置类似于:

的内容
listener.max_connections = infinity
listener.nr_of_acceptors = 1000
erlang.max_ports = 10000000
erlang.process_limit = 10000000

vernemq.conf

中 免责声明:我是VerneMQ的开发者之一,很乐意帮助您覆盖1M的连接/服务器。

答案 1 :(得分:6)

IBM Messagesight设备。专为大型物联网部署而设计,如联网汽车: http://www-03.ibm.com/software/products/en/messagesight

使用v2.0可以集群IBM IoT MessageSight服务器,它允许您将单个MessageHub扩展到多个服务器,从而实现> 1M连接。

答案 2 :(得分:5)

HiveMQ是基于Java的自托管企业MQTT代理,专门设计用于支持数百万个并发连接。

HiveMQ团队已经完成了基准测试,将超过10.0000.000个并发MQTT客户端连接到HiveMQ代理群集。为了达到这个数字,并伴随着不错的性能,需要在二手机器的操作系统上进行一些配置。

/etc/security/limits.conf 中打开文件:

hivemq  hard    nofile  1000000
hivemq  soft    nofile  1000000
root    hard    nofile  1000000
root    soft    nofile  1000000

/etc/sysctl.conf

中的TCP调整
# This causes the kernel to actively send RST packets when a service is overloaded.
net.ipv4.tcp_fin_timeout = 30

# The maximum file handles that can be allocated.
fs.file-max = 5097152

# Enable fast recycling of waiting sockets.
net.ipv4.tcp_tw_recycle = 1

# Allow to reuse waiting sockets for new connections when it is safe from protocol viewpoint.
net.ipv4.tcp_tw_reuse = 1

# The default size of receive buffers used by sockets.
net.core.rmem_default = 524288

# The default size of send buffers used by sockets.
net.core.wmem_default = 524288

# The maximum size of received buffers used by sockets.
net.core.rmem_max = 67108864

# The maximum size of sent buffers used by sockets.
net.core.wmem_max = 67108864

# The size of the receive buffer for each TCP connection. (min, default, max)
net.ipv4.tcp_rmem = 4096 87380 16777216

# The size of the sent buffer for each TCP connection. (min, default, max)
net.ipv4.tcp_wmem = 4096 65536 16777216

有关使用的VM的详细信息,操作系统方面所需的特定配置以及详细的性能结果,都可以在10 Million Benchmark Paper

中找到

免责声明:我是HiveMQ团队的成员。

答案 3 :(得分:0)

你不需要几百万美元来实现这一目标。实际上你甚至不需要成千上万 - flespi broker其商业版本可以达到你所需要的所有数字,除了那时的地理冗余。而且不仅可以实现 - 它每天24小时不间断地使用多个类似负载,正常运行时间为99.98%。

它是基于云的代理,具有私有命名空间,因此即使它是免费版本,也可供每个能够提供高达200 MB /分钟流量的人使用。

答案 4 :(得分:0)

以下是一些MQTT Brokers的列表。如果您正在搜索自托管解决方案,emqtt.io和vernemq.com都很好。

答案 5 :(得分:0)

Akiro MQTT Broker可以处理这种规模,并且是由Async IO提供支持的非常可靠且低延迟的代理。

Akiro可以与12个具有商品硬件的经纪人处理1000万个连接,这是当今MQTT经纪人的最佳基准之一。主要电信公司也使用它。试一试。谢谢

P.S我是Akiro团队的一员:)