Which MQTT server for> 1M connections

With a budget of several million for setting up the MQTT server farm, how would you do it?

It should have the following properties:

  • Support 4-5M connections in all data centers.
  • 300 kbps about 1 kb each
  • Geographic redundancy
  • Can't lose QOS1 messages
  • Each client will publish in one topic, but subscribe to their own unique topic. This implies 4-5 million topics.

MQTT server brokers can be found here: https://github.com/mqtt/mqtt.imtqy.com/wiki/server-support#capabilities

However, features are usually not published.

+5
source share
5 answers

IBM Messagingight. IOT, : http://www-03.ibm.com/software/products/en/messagesight

IBM IoT MessageSight v2.0, MessageHub , > 1M .

+6

, VerneMQ MQTT, Erlang, - , ( RAM/CPU/IPs/Bandwidth), .

http://verne.mq

- :

listener.max_connections = infinity
listener.nr_of_acceptors = 1000
erlang.max_ports = 10000000
erlang.process_limit = 10000000

vernemq.conf

: VerneMQ 1M /.

+9

HiveMQ - Enterprise MQTT Java, .

HiveMQ , 10.000.000 MQTT HiveMQ. , , .

/etc/security/limits.conf:

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

TCP /etc/sysctl.conf

# 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

, , , 10-

: HiveMQ.

+3

, . - Flespi , () , . - , 24/7 99,98%.

, , 200 /.

0

MQTT. , emqtt.io vernemq.com - .

0

All Articles