Activemq 最大MQTT连接数

Activemq 最大MQTT连接数,activemq,tcp-ip,mqtt,apollo,hivemq,Activemq,Tcp Ip,Mqtt,Apollo,Hivemq,我需要创建一个服务器场,该服务器场可以处理500多万个连接、500多万个主题(每个客户端一个),每秒处理30万条消息 我试图了解各种消息代理的功能,因此我目前正在使用两个RHEL EC2实例(r3.4XL)来提供大量可用资源。因此,您不需要查找它,它有16vCPU、122GB RAM。我的使用量远没有达到那个限度 我无法通过600k连接限制。由于客户端和服务器上似乎没有任何O/S限制(大量RAM/CPU/等),什么限制了我? 我对/etc/security/limits.conf进行了如下编辑:

我需要创建一个服务器场,该服务器场可以处理500多万个连接、500多万个主题(每个客户端一个),每秒处理30万条消息

我试图了解各种消息代理的功能,因此我目前正在使用两个RHEL EC2实例(r3.4XL)来提供大量可用资源。因此,您不需要查找它,它有16vCPU、122GB RAM。我的使用量远没有达到那个限度

我无法通过600k连接限制。由于客户端和服务器上似乎没有任何O/S限制(大量RAM/CPU/等),什么限制了我?

我对/etc/security/limits.conf进行了如下编辑:

* soft  nofile  20000000
* hard  nofile  20000000

* soft  nproc  20000000
* hard  nproc  20000000

root  soft  nofile 20000000
root  hard  nofile 20000000
net.ipv4.ip_local_port_range = 1024 65535  
net.ipv4.tcp_tw_reuse = 1 
net.ipv4.tcp_mem = 5242880  5242880 5242880 
net.ipv4.tcp_tw_recycle = 1 
fs.file-max = 20000000 
fs.nr_open = 20000000 
net.ipv4.tcp_syncookies = 0

net.ipv4.tcp_max_syn_backlog = 10000 
net.ipv4.tcp_synack_retries = 3 
net.core.somaxconn=65536 
net.core.netdev_max_backlog=100000 
net.core.optmem_max = 20480000
我对/etc/sysctl.conf进行了如下编辑:

* soft  nofile  20000000
* hard  nofile  20000000

* soft  nproc  20000000
* hard  nproc  20000000

root  soft  nofile 20000000
root  hard  nofile 20000000
net.ipv4.ip_local_port_range = 1024 65535  
net.ipv4.tcp_tw_reuse = 1 
net.ipv4.tcp_mem = 5242880  5242880 5242880 
net.ipv4.tcp_tw_recycle = 1 
fs.file-max = 20000000 
fs.nr_open = 20000000 
net.ipv4.tcp_syncookies = 0

net.ipv4.tcp_max_syn_backlog = 10000 
net.ipv4.tcp_synack_retries = 3 
net.core.somaxconn=65536 
net.core.netdev_max_backlog=100000 
net.core.optmem_max = 20480000
阿波罗号: 出口阿波罗计划=20000000

对于ActiveMQ:

我在客户端上为eth0创建了20个额外的专用地址,然后分配给它们: ip地址add 11.22.33.44/24 dev eth0

我完全了解65k端口限制,这就是我执行上述操作的原因

  • 对于ActiveMQ,我可以访问:574309
  • 对于阿波罗,我的电话号码是:592891
  • 对于Rabbit,我达到了90k,但日志记录非常糟糕,我不知道该怎么做才能升得更高,尽管我知道这是可能的
  • 对于Hive,我的试验限值是1000。等待许可证
  • IBM想用我房子的价格来使用它们-不
回答: 在执行此操作时,我意识到我的客户机设置在/etc/sysctl.conf文件中有一个拼写错误:net.ipv4.ip\u local\u port\u range

我现在能够在188秒内将956591个MQTT客户端连接到我的Apollo服务器


更多信息: 为了区分这是O/S连接限制还是代理,我决定编写一个简单的客户机/服务器

服务器:

    Socket client = null;
    server = new ServerSocket(1884);
    while (true) {
        client = server.accept();
        clients.add(client);
    }
客户:

    while (true) {
        InetAddress clientIPToBindTo = getNextClientVIP();
        Socket client = new Socket(hostname, 1884, clientIPToBindTo, 0);
        clients.add(client);
    }
对于21个IP,我希望65535-1024*21=1354731是边界。实际上,我能够实现1231734

[root@ip ec2-user]# cat /proc/net/sockstat
sockets: used 1231734
TCP: inuse 5 orphan 0 tw 0 alloc 1231307 mem 2
UDP: inuse 4 mem 1
UDPLITE: inuse 0
RAW: inuse 0
FRAG: inuse 0 memory 0
因此,socket/kernel/io的内容已经解决了

我仍然无法使用任何代理实现这一点

再次在我的客户机/服务器测试之后,这是内核设置

客户:

[root@ip ec2-user]# sysctl -p
net.ipv4.ip_local_port_range = 1024     65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 5242880      5242880 15242880
net.ipv4.tcp_tw_recycle = 1
fs.file-max = 20000000
fs.nr_open = 20000000

[root@ip ec2-user]# cat /etc/security/limits.conf
* soft  nofile  2000000
* hard  nofile  2000000    
root  soft  nofile 2000000
root  hard  nofile 2000000
服务器:

[root@ ec2-user]# sysctl -p
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 5242880      5242880 5242880
net.ipv4.tcp_tw_recycle = 1
fs.file-max = 20000000
fs.nr_open = 20000000
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_max_syn_backlog = 1000000
net.ipv4.tcp_synack_retries = 3
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 1000000
net.core.optmem_max = 20480000

真的不知道如何提高吞吐量。然而,结帐。不确定是否支持MQTT,但它似乎能够实现最大吞吐量/#客户端。您尝试过Mosquito吗?()尝试Hive、Apollo、蚊子、Active、Rabbit、蚊子在不同的平台上进行了尝试,无论CPU/RAM如何,我们都无法在Apollo中超越20K连接。我们正在运行一个测试mqTT客户端(使用Paho库)来打开连接。有什么建议吗?我们观察到的是超过20K的连接,新的连接以缓慢的速度打开。服务器的CPU使用率、内存都在控制之下。我们还尝试从不同的主机运行客户端。同样的结果。@KarthikMurugan现在是2021年,但你能解决这个问题吗?使用相同的用例,并在2k连接处卡住。