Activemq 最大MQTT连接数
我需要创建一个服务器场,该服务器场可以处理500多万个连接、500多万个主题(每个客户端一个),每秒处理30万条消息 我试图了解各种消息代理的功能,因此我目前正在使用两个RHEL EC2实例(r3.4XL)来提供大量可用资源。因此,您不需要查找它,它有16vCPU、122GB RAM。我的使用量远没有达到那个限度 我无法通过600k连接限制。由于客户端和服务器上似乎没有任何O/S限制(大量RAM/CPU/等),什么限制了我? 我对/etc/security/limits.conf进行了如下编辑: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进行了如下编辑:
* 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想用我房子的价格来使用它们-不李>
更多信息: 为了区分这是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连接处卡住。